我正在尝试在android / iOS设备上部署tensorflow模型的方法。所以我做了: 1)使用tf.saved_model.builder.SavedModelBuilder获取.pb文件中的模型 2)使用tf.saved_model.loader.load()来验证我是否可以恢复模型
但是,当我想使用import_pb_to_tensorboard.py进一步检查模型时,请遵循以下建议: 1)https://medium.com/@daj/how-to-inspect-a-pre-trained-tensorflow-model-5fd2ee79ced0 2)https://hackernoon.com/running-a-tensorflow-model-on-ios-and-android-ce89446c8143
我收到了这个错误:
File "/Users/rjtang/_hack/env.tensorflow_src/lib/python3.4/site-packages/google/protobuf/internal/python_message.py", line 1083, in MergeFromString
if self._InternalParse(serialized, 0, length) != length:
.....
File "/Users/rjtang/_hack/env.tensorflow_src/lib/python3.4/site-packages/google/protobuf/internal/decoder.py", line 612, in DecodeRepeatedField
if value.add()._InternalParse(buffer, pos, new_pos) != new_pos:
....
File "/Users/rjtang/_hack/env.tensorflow_src/lib/python3.4/site-packages/google/protobuf/internal/decoder.py", line 746, in DecodeMap
raise _DecodeError('Unexpected end-group tag.')
代码和生成的.pb文件在这里:
我使用的tensorflow版本是从源代码“HEAD在v1.4.1分离”构建的
答案 0 :(得分:0)
嗯,我明白现在发生了什么。 Tensorflow至少有3种方法来保存和加载模型。该图将被序列化为以下3个protobuf对象之一:
您只需要正确反序列化,例如https://github.com/rjt10/hear_it/blob/master/urban_sound/model_check.py
对于Android,TensorFlowInferenceInterface()需要GraphDef,https://github.com/tensorflow/tensorflow/blob/e2be6d4c4fc9f1b7f6040b51b23190c14202e797/tensorflow/contrib/android/java/org/tensorflow/contrib/android/TensorFlowInferenceInterface.java#L541
这解释了原因。