我一直在使用这个简单的脚本来转储.pb图表,以便在tensorboard中加载以查看:
import sys
import os
import os.path
import tensorflow as tf
from tensorflow.python.platform import gfile
model_filename = sys.argv[1]
output_dirname = sys.argv[2]
if not os.path.exists(output_dirname):
os.makedirs(output_dirname)
with tf.Session() as sess:
with gfile.FastGFile(model_filename, 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
_ = tf.import_graph_def(graph_def, name='')
writer = tf.summary.FileWriter(output_dirname, tf.get_default_graph())
writer.close()
如果您使用图形转换工具至少通过TF 1.2,这非常适合可视化图形中发生的事情。当我最近尝试掌握时,我遇到以下问题(例如使用https://storage.googleapis.com/download.tensorflow.org/models/inception_dec_2015.zip作为图表):
bazel-bin/tensorflow/tools/graph_transforms/transform_graph \
--in_graph=tensorflow_inception_graph.pb \
--out_graph=inception_v3_quantized.pb \
--inputs="Mul" \
--outputs='softmax' \
--transforms='add_default_attributes
strip_unused_nodes(type=float, shape="1,299,299,3")
remove_nodes(op=Identity, op=CheckNumerics)
fold_constants(ignore_errors=true)
fold_batch_norms
fold_old_batch_norms
quantize_weights
quantize_nodes
strip_unused_nodes
sort_by_execution_order'
python dump_for_tensorboard.py inception_v3_quantized.pb /tmp/dump_logdir
在Tensorflow 1.2及更早版本中,这很好用。我得到一个目录,我可以指向tensorboard。但是在掌握上我得到了这个:
2017-12-11 15:56:39.159333: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
Traceback (most recent call last):
File "../dump_for_tensorboard.py", line 16, in <module>
_ = tf.import_graph_def(graph_def, name='')
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/importer.py", line 369, in import_graph_def
'Control input %r not found in graph_def.' % (input_name,)))
ValueError: graph_def is invalid at node u'conv/Conv2D_eightbit/Mul__port__0/reshape_dims': Control input '^Mul:0' not found in graph_def..
在使用图形转换工具后我使用的其他脚本中也会出现这种情况。
由于这是在图表的开头,我不确定它是否与输入节点有关,或者我是否也会为图中的其他节点获取此信息。
在老版本的tensorflow上,比如1.2分支,这个脚本运行正常。
看起来这可能与提交d0a5d885有关(因为这会在节点名称之前插入&#34; ^&#34;但它是一个相当大的合并提交。
答案 0 :(得分:0)
这个问题看起来像是在这里跟踪https://github.com/tensorflow/tensorflow/pull/14527 刚刚合并为主人。
如果你克隆了repo并再次构建了transform_graph工具,我相信这个问题现在就解决了。