发新帖

如何正确的freeze

[复制链接]
1534 8

快来加入 TensorFlowers 大家庭!

您需要 登录 才可以下载或查看,没有帐号?加入社区

x
在freeze模型的时候使用以下代码:

constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph_def, ['name', 'name2', 'name3'])
with tf.gfile.FastGFile(FLAGS.model_pb_dir + 'mymodel.pb', mode='wb') as f:
    f.write(constant_graph.SerializeToString())


这样做和官方的:

bazel build tensorflow/tools:freeze_graph
bazel-bin/tensorflow/tools/freeze_graph \
--input_graph=/tmp/model/my_graph.pb \
--input_checkpoint=/tmp/model/model.ckpt-1000 \
--output_graph=/tmp/frozen_graph.pb \
--output_node_names=output_node \


有什么区别 ??




我知道答案 回答被采纳将会获得10 金币 + 10 金币 已有8人回答
本楼点评(0) 收起

精彩评论8

舟3332  TF芽芽  发表于 2018-5-2 17:13:18 | 显示全部楼层
我的理解是这样的。
这两个东西作的是同一件事情。第一个是代码层做转化。第二个是用命令行做转换。

看你方便用哪一个就用好了哈~
本楼点评(0) 收起
M丶Sulayman  TF豆豆  发表于 2018-5-3 08:57:50 | 显示全部楼层
舟3332 发表于 2018-5-2 17:13
我的理解是这样的。
这两个东西作的是同一件事情。第一个是代码层做转化。第二个是用命令行做转换。

这个是不是在读文件写文件?就和普通Python的openfile一样啊?
本楼点评(0) 收起
Renmin  TF荚荚  发表于 2018-5-3 10:38:07 | 显示全部楼层
就是把变量弄成常量放到pb文件里面。
本楼点评(0) 收起
M丶Sulayman  TF豆豆  发表于 2018-5-4 09:59:42 | 显示全部楼层
Renmin 发表于 2018-5-3 10:38
就是把变量弄成常量放到pb文件里面。

变量还可以成为常量啊...不是一直在变动么
本楼点评(0) 收起
黄虎  TF荚荚  发表于 2018-5-4 12:49:43 来自手机  | 显示全部楼层
M丶Sulayman 发表于 2018-5-4 09:59
变量还可以成为常量啊...不是一直在变动么

当模型训练结束之后里面的变量就会作为常量……然后变成模型使用
本楼点评(0) 收起
黄虎  TF荚荚  发表于 2018-5-4 12:50:44 来自手机  | 显示全部楼层
我的理解一个是基于工程中的方式……一个是基于cmd命令行的方式我一般在工程中采用第一种
本楼点评(0) 收起
slobber  TF荚荚  发表于 2018-5-7 11:50:17 | 显示全部楼层
变量在训练时会变,但是之后的预测应用中,一般会变成 static 的,因为已经由训练确定好了对应的参数值,通过 freeze,可以对模型进行优化固化,提升性能。
另外,如果希望在手机上使用训练好的模型进行预测,就需要将 pb 文件 freeze 到 tflite 格式。
本楼点评(0) 收起
M丶Sulayman  TF豆豆  发表于 2018-5-7 12:50:11 | 显示全部楼层
slobber 发表于 2018-5-7 11:50
变量在训练时会变,但是之后的预测应用中,一般会变成 static 的,因为已经由训练确定好了对应的参数值,通 ...

原来这样啊,解释的通俗易懂~
本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

快速回复 返回顶部 返回列表