gpt4 book ai didi

tensorflow - 使用 protoc 读取 Google Protocol buffer .pb 文件

转载 作者:行者123 更新时间:2023-12-03 23:18:04 26 4
gpt4 key购买 nike

我已经从源代码编译了 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 的原因是什么?它不能用作独立阅读器吗?或者,上面提到的 inception.pb 文件已经在 Tensorflow 的后端使用了 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 也可用于解码 .pb 文件。

protoc --decode_raw < my_input.pb

将输出文件的原始结构。这不是很有用,因为(与 XML 或 JSON 相反)protobuf 文件不包含那么多的结构信息(元素名称),而是“外包”到 .proto 文件中。

如果您有正确的 .proto 文件,在这种情况下来自 tensorflow 存储库,您可以使用 -I path_to_tensorflow_checkout 并指定正确的消息类型名称。请注意,在 tensorflow .proto 文件中,所有类型都在 tensorflow 包中,因此您必须在类型名称前加上前缀。工作示例:
protoc --decode tensorflow.SavedModel tensorflow/core/protobuf/saved_model.proto < path_to_saved_model.pb

(在这种情况下,我从 tensorflow 存储库目录运行命令,省略了 -I/ --proto_path 。)

根据您的 model file format (SavedModel or GraphDef) ,您可能需要使用 tensorflow.GraphDef (例如,用于“卡住图”)而不是 tensorflow.SavedModel

关于tensorflow - 使用 protoc 读取 Google Protocol buffer .pb 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45339253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com