2018-01-28-TF源码做版本兼容的一个粗暴方法

taichu 2018-01-28 原文

2018-01-28-TF源码做版本兼容的一个粗暴方法


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

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

  • 因为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)



#....后续逻辑代码忽略,和本文主题无关...
发表于 2018-01-28 15:36 taichu 阅读() 评论() 编辑 收藏

 

版权声明:本文为taichu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/taichu/p/8371289.html

2018-01-28-TF源码做版本兼容的一个粗暴方法的更多相关文章

  1. 重磅!Google AI 体验展即将登陆魔都!

    想要探索艺术世界,解锁最 IN 科技吗? 想要与 AI 近距离接触吗? 当艺术遇见 AI 又会碰撞出怎样的火花 […]...

  2. 在线AI外语口语练习机器人-Myshell AI

    Myshell AI,是一个在线AI外语口语练习机器人,由 AI 和 Web3 提供支持的机器人创建平台,目前一共有4个角色的机器人,支持英语口语练习和日语口语练习,目前可以向机器人发送文本和音频消息,具备强大的自动语音识别 (ASR) 和文本转语音 (TTS) 能力,可以在一对一的基础上为机器人和用户提供开放式的语音聊天信,与基于文本的对话相比,可以更近距离地交互。...

  3. 你曾后悔进入 IT 行业吗?为什么?(转自知乎)–一生不悔入IT

    你曾后悔进入 IT 行业吗?为什么?(转自知乎)–一生不悔入IT 一、总结 一句话总结:看了大概2 […]...

  4. GPRS的工作原理、主要特点(转自aerkate) – I CAN DO IT

    GPRS的工作原理、主要特点(转自aerkate) GPRS的工作原理、主要特点: 引 言 近年来,通信技术和 […]...

  5. AI Boot Camp 分享之 ML.NET 机器学习指南

    今天在中国七城联动,全球134场的AI BootCamp胜利落幕,广州由卢建晖老师组织,我参与分享了一个主题《 […]...

  6. Record It for Mac(Mac屏幕录像工具)

    Record It Mac破解版将会是你见过的最简单,最便捷的Mac屏幕录像工具。Record It支持一键录 […]...

  7. ChatMind-人工智能AI生成思维导图

    ChatMind,是一款利用与 AI 的对话中生成和编辑思维导图的工具,支持上下文改写扩充对话,ChatMind AI 可用于多种场景,例如记笔记、日程安排、项目管理、头脑风暴、框架等等。既能帮助用户快速总结分析,又能源源不断地提供创作灵感,致力为用户提供最优质的智能化思维导图方案,专注于AI生成思维导图的效率工具。...

  8. Ai智能视频剪辑软件-灵狐剪辑 永久版

    灵狐剪辑是一款Ai剪辑软件,它能自动剪辑段视频,批量裁剪去重,搬运视频的软件,这款是永久使用版本。...

随机推荐

  1. Spark学习之Spark Core

    Spark Core 一、什么是Spark?(官网:http://spark.apache.org) 1、什么 […]...

  2. android微信聊天记录导出到电脑【微信安卓版技巧】

      微信,对它又爱又恨!爱的是微信能替代很多手机通话短信,恨的是有些较早前的手机不能友好支持,比如ytkah之 […]...

  3. 行为型设计模式 – 观察者模式详解

    基本介绍 观察者模式(Observer Pattern)又被称为发布-订阅(Publish/Subscribe […]...

  4. Oracle查询性能优化

    原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之 […]...

  5. Mac OS 下的解压缩软件——The Unarchiver

    The Unarchiver 是 Mac 上最流行的解压软件,免费开源。操作方式与系统自带解压工具 Archi […]...

  6. Java8部分新特性的学习

    Java8中的新特性 一、Lambda表达式 Lambda表达式可以理解为一种可传递的匿名函数:它没有名称,但 […]...

  7. Linux基础介绍【第九篇】

    Linux基础介绍【第九篇】 服务器添加3块磁盘的体系结构   [root@oldboylinux test] […]...

  8. 写在两年前的客户关系管理内部培训讲解

    客户关系管理虽然我好几年前就知道这个理念,也做了一些实践尝试,但由于我不是从事一线业务部门,可能对业务理解不深 […]...

展开目录

目录导航