我正在尝试使用最新的batch_norm()并在此处找到它:batch_norm。如果我使用来自IPython的help(tf.contrib.layers.batch_norm)
,我会看到以下感兴趣的文档字符串:
注意:当is_training为True时,moving_mean和moving_variance 需要 更新后,默认情况下update_ops放在
tf.GraphKeys.UPDATE_OPS
中,因此需要将它们作为依赖项添加到train_op
,例如:
update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
if update_ops:
updates = tf.group(*update_ops)
total_loss = control_flow_ops.with_dependencies([updates], total_loss)
然而,batch_norm的源代码具有以下文档字符串,并已更正。
注意:当is_training为True时,moving_mean和moving_variance 需要更新,默认情况下放置update_ops
tf.GraphKeys.UPDATE_OPS
因此需要将它们添加为依赖项 到train_op
,示例:
update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(update_ops):
train_op = optimizer.minimize(loss)
在IPython提示符下使用tf.__version__
,我得到了0.12.1'。如何判断我运行的代码是否与tf.contrib.layers中的最新代码相同?如果只更改了文档字符串并且代码是相同的,我宁愿不升级或重新安装tensorflow,因为我的所有内容都适用于GPU。我的安装是在一个迷你conda环境中,tensorflow最初是在这个环境中使用pip安装的。另外,如果我确实需要一个不同的版本,获得它的最佳方法是什么,然后测试我是否有来自tf.contrib.layers的匹配版本?
答案 0 :(得分:0)
我能够通过使用本地副本对感兴趣的文件执行差异来验证我没有最新的代码。我首先在layers.py从Github下载文件layers.py
。我点击了原始按钮,然后将图像保存到本地目录。在我的情况下,本地副本位于site-packages
下的我的miniconda目录中。那时很明显我的tensorflow版本需要更新,所以我安装了最新版本。这次安装打破了现有的miniconda环境,但这是出乎意料的。见installing tensorflow...