#1.如下程序是一个tensorflow的神经网络代码的开始一小部分,用来说明如何简单的做TF版本兼容及如何在pydev中忽略编译错误来运行
#2.因为TF版本尚不稳定,不同版本间差别不小,github上有不少0.10.0,0.11.0,1.0.1等不同TF版本的python程序,所以你本地环境是一套py和tf就容易发现此起彼伏的问题。
#3.如下是一个简单的解决办法,用try...except结构来做tf的版本兼容,这样可以不用到代码中每个函数去修改,在开通做一些判断和转换就可。比如下面对“scalar_summary”和“concat_v2”函数的判断,新老TF如果不同,就可以在这里做兼容,而保持程序后续的主体基本不动。
#4.但我们遇到一个问题,这种try...except的结构再eclipse+pydev中会报错(红色波浪线),我们容易想到,这是pydev编译器来帮我们处理,它探测到问题,并用error的红色波浪线来提示。只要我们进入菜单“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)
#....后续逻辑代码忽略,和本文主题无关...
以上是如何让Eclipse中pydev为此跳过这些编译error的详细内容。更多信息请关注PHP中文网其他相关文章!