我已经从源代码编译了Google Protobuf并生成了
目前,我可以编写一个示例读取器来转储我的
protoc
二进制文件。现在,假设有一个.pb
文件,即tensorflow_inception_v3_stripped_optimized_quantized.pb
,我该如何在不使用Tensorflow
库的情况下读取它的内容?目前,我可以编写一个示例读取器来转储我的
.pb
文件的事件,稍后可以通过以下方式由tensorboard
读取:import tensorflow as tf
from tensorflow.python.platform import gfile
INCEPTION_LOG_DIR = '/tmp/inception_v3_log'
if not os.path.exists(INCEPTION_LOG_DIR):
os.makedirs(INCEPTION_LOG_DIR)
with tf.Session() as sess:
model_filename = './model/tensorflow_inception_v3_stripped_optimized_quantized.pb'
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.train.SummaryWriter(INCEPTION_LOG_DIR, graph_def)
writer=tf.summary.FileWriter(INCEPTION_LOG_DIR, graph_def)
writer.close()
然而,我不太明白我为什么要编译protoc
?它不能作为独立的阅读器使用吗?或者,在Tensorflow的后端中,所提到的inception.pb文件已经在使用Protocol buffer,而无需使用protoc
吗?
像这样的命令确实会生成错误:
protoc --python_out=. tensorflow_inception_v3_stripped_optimized_quantized.pb
protoc --cpp_out=. tensorflow_inception_v3_stripped_optimized_quantized.pb
我查看了一下,.pb
文件是半可读的,但是我无法在任何地方找到直接解析该文件内容的坚实答案。我是否遗漏了什么?谢谢。
protoc
(以及一系列第三方工具)可用于在广泛的语言/框架中生成代码;大多数protobuf使用与tensorflow 没有任何关系;涉及的确切API取决于您感兴趣的语言/框架。那么:您想使用什么语言/框架?您提到“这些命令会生成错误:”-但是:该命令需要一个.proto
模式,而不是数据文件。protoc
可以解释数据文件,但这不是通常的用法。您是否有模式文件? - Marc Gravellprotoc
处理数据文件有两种方式 - 一种涉及.proto
文件和数据文件,另一种只涉及数据文件但结果不够清晰;也许都不是你想要的方式... - Marc Gravellprotoc --decode MSG --proto-path=/PATH/TO/PROTOs file.proto < frozen_PBfile.pb
预先感谢您! - Amir