zoukankan      html  css  js  c++  java
  • 2018-01-28-TF源码做版本兼容的一个粗暴方法


    layout: post
    title: 2018-01-28-TF源码做版本兼容的一个粗暴方法
    key: 20180128
    tags: IT AI TF
    modify_date: 2018-01-28

    TF源码做版本兼容的一个粗暴方法

    说明:

    • 本文发布于: gitee,github,博客园

    • 转载和引用请指明原作者和连接及出处.

    • 因为TF版本演进很快,不同版本间差别不小,github上的TF源码对应了0.10.0,0.11.0,1.0.1等不同TF版本,但一般你本地环境是一套TF,容易发现版本问题,非常累人。

    • 一个简单粗暴的解决办法是用try...except结构来做tf的版本兼容,这样不用到代码中修改每个函数,在开头做一些函数版本的判断和转换。

      • 比如: 下面示例代码,对“scalar_summary”和“concat_v2”函数的判断,新老TF如果不同,就可在这里做兼容,而保持程序主体逻辑不动。
    • 但这种try...except的结构在eclipse+pydev中会报错(红色波浪线),这是pydev编译器智能探测导致。解决如下:

      • 步骤1:只要进入菜单“windows-->Perferences-->PyDev-->Editor-->code anaylsis”后,调整右面的“undefined”和“import”的tab面板中的处理级别,将“error”改为“warning”。
      • 在eclipse中选中“abc.py”文件,右键菜单选择“pydev-->code analysis”来重新编译codes,则红色波浪线error不见了,整个程序可以run了。
    from tensorflow.python.framework import ops
    from utils import *
    import tensorflow as tf
    import math
    import numpy as np
    
    #如下这个try except,通过异常来处理TF的版本兼容性问题!!!
    #这里提供了一个思路,来兼容TF的新老格式差异问题,简单但实用!
    try:
        #import tensorflow as tf
        #较老的TF的格式;
        image_summary = tf.image_summary
        scalar_summary = tf.scalar_summary
        histogram_summary = tf.histogram_summary
        merge_summary = tf.merge_summary
        SummaryWriter = tf.train.SummaryWriter
    except:
        #如下是较新的TF的新格式,如果TRY中OLD格式失败则用新格式;
        image_summary = tf.summary.image
        scalar_summary = tf.summary.scalar
        histogram_summary = tf.summary.histogram
        merge_summary = tf.summary.merge
        SummaryWriter = tf.summary.FileWriter
    
    if "concat_v2" in dir(tf):
        def concat(tensors, axis, *args, **kwargs):
            return tf.concat_v2(tensors, axis, *args, **kwargs)
    else:
        def concat(tensors, axis, *args, **kwargs):
            return tf.concat(tensors, axis, *args, **kwargs)
    
    
    
    #....后续逻辑代码忽略,和本文主题无关...
    
  • 相关阅读:
    c语言结构体数组引用
    c语言结构体数组定义的三种方式
    如何为SAP WebIDE开发扩展(Extension),并部署到SAP云平台上
    SAP SRM ABAP Webdynpro和CFCA usb key集成的一个原型开发
    使用SAP API portal进行SAP SuccessFactors的API测试
    SAP UI5应用里的页面路由处理
    在SAP WebIDE Database Explorer里操作hdi实例
    如何使用SAP事务码SAT进行UI应用的性能分析
    使用SAP WebIDE进行SAP Cloud Platform Business Application开发
    SAP CRM WebClient UI ON_NEW_FOCUS的用途
  • 原文地址:https://www.cnblogs.com/taichu/p/8371289.html
Copyright © 2011-2022 走看看