Notetensorflow freeze model

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Notetensorflow freeze model相关的知识,希望对你有一定的参考价值。

参考技术A 一、freeze

加载模型文件,从checkpoint文件读取权重数据初始化到模型里的权重变量,将权重变量转换成权重常量,通过指定的输出节点将没用于输出推理的Op节点从图中剥离掉,再重新保存到指定的文件里

1.tf.train.write_graph()以及tf.train.saver()生成pb文件和ckpt文件

bazel-bin/tensorflow/python/tools/freeze_graph --input_graph=/path/to/graph.pb --input_checkpoint=/path/to/model.ckpt --output_node_names=output/predict --output_graph=/path/to/frozen.pb

2.把训练好的权重变成常量之后再保存成PB文件

output_graph_def = convert_variables_to_constants(sess, sess.graph_def, output_node_names=['output/predict'])

with tf.gfile.FastGFile('model/CTNModel.pb', mode='wb') as f:

     f.write(output_graph_def.SerializeToString())

二、quant

1.网络参数是按层组织,每层数值都在同一数量级,即范围相差不大,如[-6.0,4.0],有大量论文研究表明确认值最大和最小后每层数据使用8bit定点化量化已可以很好满足推断计算。量化最直接结果是参数存储空间要求变小,经验值是减少约3/4;减少内存读取数据量,节省带宽;使用simd进行计算加速,如果有dsp进行8bit加速计算节能,使得移动设备上进行推断计算变得更强大有效。

bazel-bin/tensorflow/tools/quantization/quantize_graph \

  --input=/tmp/classify_image_graph_def.pb \

  --output_node_names="softmax" --output=/tmp/quantized_graph.pb \

  --mode=eightbit

2.可删除给定的一组输入和输出不需要的所有节点,该脚本还进行了一些其他优化,可以帮助加快模型,例如将显式批量归一化操作合并到卷积权重中以减少计算次数。这可以根据输入型号提供30%的速度

python -m tensorflow.python.tools.optimize_for_inference \

  --input = tf_files / retrained_graph.pb \

  --output = tf_files / optimized_graph.pb \

  --input_names =“input”\

  --output_names = “final_result”

cx_Freeze:主脚本中的 Python 错误。 Python 3.6 + cx_Freeze

【中文标题】cx_Freeze:主脚本中的 Python 错误。 Python 3.6 + cx_Freeze【英文标题】:cx_Freeze: Python error in main script. Python 3.6 + cx_Freeze 【发布时间】:2017-04-06 08:54:45 【问题描述】:

我在使用cx_Freeze-5.0.1-cp36-cp36m-win32.whl 将 python 3.6 编译为 exe 时遇到问题,请帮助我。

我已经从http://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_freeze安装了Cx-freeze

然后我启动 cmd 并运行以下命令:

    python setup.py build

setup.py 文件如下:

        import sys
    from cx_Freeze import setup, Executable

    setup(
        name = "Check Telemetry",
        version = "0.1",
        description = "Check Telemetry",
        executables = [Executable("excel_to_sqlite_xlrd-light.py", base = "console")])

然后我有这样的事情:

但如果我运行我的 .exe 文件,我会遇到以下问题:

以下有错误的行的屏幕截图:

你有什么想法吗? 谢谢!

【问题讨论】:

【参考方案1】:

似乎程序没有找到依赖项所以添加这个(你必须添加缺少的依赖项(在这个例子中我放了os):

    # Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = "packages": ["os"], "excludes": ["tkinter"]

然后:

setup(  name = "Check Telemetry",
        version = "0.1",
        description = "Check Telemetry",
        options = "build_exe": build_exe_options,
        executables = [Executable("excel_to_sqlite_xlrd-light.py", base = "console")])

【讨论】:

感谢您的回答!你能告诉我我应该把这个字符串放在哪里,在哪个文件中? -> build_exe_options = "packages": ["os"], "excludes": ["tkinter"] 当然,在 setup 调用之前的 setup.py 文件中。有时 Cx-freeze 无法识别该库,您必须指定。 :) 请投票给答案 :) 非常感谢!我会试试!当然,我会投票给答案,但我不能立即投票,因为我刚刚注册并且声望不到 15

以上是关于Notetensorflow freeze model的主要内容,如果未能解决你的问题,请参考以下文章

cx_Freeze 不工作 - 没有名为 cx_Freeze 的模块

cx_Freeze:主脚本中的 Python 错误。 Python 3.6 + cx_Freeze

cx_Freeze 可执行文件在使用 multiprocessing 和 freeze_support 时运行多个任务

cx_freeze 错误“cx_Freeze.freezer.ConfigError:没有名为控制台的基础”

使用 cx_freeze 后不会出现 QGraphicsPixmapItem

`pip3 freeze` 在开头打印很多包