Tensowflow GraphDef在不同平台上的权重加载方式不同

时间:2017-09-22 17:09:10

标签: tensorflow

我能够训练TensorFlow模型并在我的Ubuntu开发环境中保存到冻结的GraphDef,然后从该文件恢复。图表运行良好,产生合理的预测。

然而,当我在OSX(Sierra)上加载相同的图形时,许多张量权重可疑地接近于零。

以下是我加载GraphDef的方法:

g = tf.GraphDef()
graph_filename = ".../frozen_inference_graph.pb"
f = tf.gfile.Open(graph_filename, "rb")
g.ParseFromString(f.read())
f.close()

我正在使用此推理图导出器保存GraphDef:https://github.com/tensorflow/models/blob/master/research/object_detection/export_inference_graph.py

我已经确认图表在加载后在两个平台上都有相同数量的节点,并且我没有找到任何节点存在于一个图形中而不存在于另一个图形中。两个图表似乎都能够运行完成(从输入变量到输出变量)。我已经将问题分解为权重,至少第一个卷积层在不同平台上的加载方式不同(我相信很多其他人都有同样的问题)。这最终导致在FusedBatchNorm层中出现nans,其中epsilon权重未被添加到OSX上的方差估计(但是,同样,不同的权重从第一层开始,这是卷积的。)

平台/版本的详细信息:

适用于:在Ubuntu 16.04.3 LTS(GNU / Linux 4.4.0-93-generic x86_64)上运行的Tensorflow 1.3.0。这个平台也有一个GPU,虽然我已经确认GPU没有被用来评估图形。

不起作用:在OSX Sierra上运行的Tensorflow 1.3.0,10.12.5

不起作用:在Android上运行的Tensorflow Java实现(这里没有确认版本,但我已经确认输出值都是零。我现在很好地关注OSX和Ubuntu之间的区别)。

0 个答案:

没有答案