tensorflow 使用TF-TRT会使冻结的protobuf文件的大小加倍

j13ufse2  于 2022-10-29  发布在  其他
关注(0)|答案(2)|浏览(168)

如需帮助和支持,请访问Stack Overflow:
https://stackoverflow.com/questions/tagged/tensorflow的最大值
如果您打开GitHub问题,我们的政策如下:
1.它必须是一个错误,一个功能请求,或一个重大的问题,与文件(为小文件修复,请发送PR代替)。
1.必须填写下表。
1.这应该不是TensorBoard的问题。这些都是here

以下是我们制定该政策的原因:TensorFlow开发人员会对问题做出响应。我们希望专注于对整个社区有益的工作,例如修复bug和添加功能。支持只对个人有帮助。当问题提交时,GitHub还会通知成千上万的人。我们希望他们看到你在交流有趣的问题,而不是被重定向到Stack Overflow。

系统信息

*我是否编写了自定义代码(而不是使用TensorFlow中提供的常用示例脚本):没有
*操作系统平台和分发(例如Linux Ubuntu 16.04):Ubuntu 16.04版
*移动的设备(例如iPhone 8、Pixel 2、Samsung Galaxy)(如果问题发生在移动设备上):不适用
*TensorFlow安装自(源代码或二进制):来源
*TensorFlow版本(使用下面的命令):主机@3e137b2
*Python版本:2.7
*Bazel版本(如果从源代码编译):0.16.1
*GCC/编译器版本(如果从源代码编译):第5.4.0节20160609
*CUDA/cuDNN版本:9.0/7.1
*GPU型号和内存:1080ti/11 gb双端口
*要重现的确切命令

import tensorflow as tf
from tensorflow.contrib import tensorrt as trt
import numpy as np

from keras import backend as K
cfg = K.tf.ConfigProto()
cfg.gpu_options.allow_growth = True
K.set_session(K.tf.Session(config=cfg))

def load_graph(frozen_graph_filename):
    # We load the protobuf file from the disk and parse it to retrieve the
    # unserialized graph_def
    with tf.gfile.GFile(frozen_graph_filename, "rb") as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())

    # Then, we can use again a convenient built-in function to import a graph_def into the
    # current default Graph
    with tf.Graph().as_default() as graph:
        tf.import_graph_def(
            graph_def,
            name='', #DEBUG
        )
    return graph

fid = "model.pb"
output_nodenames = 'output1,output2,output3'
output_node = list(output_nodenames.split(","))
g = load_graph(fid)
with tf.Session(graph=g) as sess:
    nodes = [n.name for n in tf.get_default_graph().as_graph_def().node]
    with open("original_graph.txt", "w") as fid:
        for item in nodes:
            fid.write("%s\n" % item)
    writer = tf.summary.FileWriter("logs_viz_orig", tf.get_default_graph().as_graph_def())
    trt_graph = trt.create_inference_graph(
    input_graph_def=tf.get_default_graph().as_graph_def(),
    outputs=output_node,
    max_batch_size=1,
    max_workspace_size_bytes=1 << 25,
    precision_mode="FP32",  # TRT Engine precision "FP32","FP16" or "INT8"
    minimum_segment_size=2  # minimum number of nodes in an engine
    )
    f = open("trt.pb", 'w')
    f.write(trt_graph.SerializeToString())
    f.close()

原始图形总共约1100个操作,而trt图形约为900个,即使原始模型约为60 mb,但导出的trt图形约为120 mb。
您可以使用我们的环境捕获脚本来收集其中的一些信息:
https://github.com/tensorflow/tensorflow/tree/master/tools/tf_env_collect.sh
您可以通过以下方式获取TensorFlow版本
python -c“导入tensorflow 作为tf;打印(tf.GIT_VERSION,tf.版本)”

描述问题

请在此处清楚地描述问题。确保在此处说明为什么这是TensorFlow中的一个bug或一个功能请求。

源代码/日志

包括有助于诊断问题的任何日志或源代码。如果包括追溯,请包括完整的追溯。应附加大型日志和文件。请尝试提供可重现的测试用例,该测试用例是生成问题所必需的最低限度。

uz75evzq

uz75evzq1#

你到底有什么问题?

mnemlml8

mnemlml82#

使用TF-TRT会使protobuf文件的大小加倍。这种优化是针对推理时的移动的设备的,因此这可能是一个问题。

相关问题