1

我正在使用exporterfromtensorflow.contrib.session_bundle来保存我的模型:

x = tf.placeholder(tf.float32, (None,) + (100, 200) + (1,))
....
saver = tf_saver.Saver(sharded=True)
model_exporter = exporter.Exporter(saver)
model_exporter.init(
    sess.graph.as_graph_def(),
    named_graph_signatures={
        'inputs': exporter.generic_signature({'images': x}),
        'outputs': exporter.generic_signature({'classes': y})})

然后我将模型重新加载(session_bundlefrom tensorflow.contrib.session_bundle):

sess, meta_graph_def = session_bundle.load_session_bundle_from_path(input)

但是,当我检查与输入 x 对应的占位符张量时,我看不到任何形状信息:

> sess.graph.get_tensor_by_name(input_name)
<tf.Tensor 'Placeholder:0' shape=<unknown> dtype=float32>

这是设计使然还是有一些错误导致形状丢失?

4

1 回答 1

0

下面是一位同事的回答:

exporter.generic_signature调用(在构建时named_graph_signatures)填充generic_signature此处定义的映射:https ://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/session_bundle/manifest.proto#L69

映射中的值是 a TensorBinding,它本身就是张量名称。见https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/session_bundle/manifest.proto#L20

所以预计不会保留形状,名称应该足以识别张量。”

于 2016-11-22T23:23:52.280 回答