Tensorflow学习笔记(五)模型的保存(四)
- 将模型文件合并为一个.pb文件
- SavedModel模型合成.pb文件
- .meta模型合成.pb文件
将模型文件合并为一个.pb文件
声明: 参考链接这里之前Tensorflow学习笔记(二)模型的保存与加载(一 )与Tensorflow学习笔记(三)模型的保存与加载(二)的保存方法保存的模型文件的模型框架图和权重都是分开的,有时候我们希望他们能够合并在一起方便在其他地方调用比如安卓端。
虽然Tensorflow学习笔记(四)模型的保存与加载(三)中的保存方法可以生成一个可供Android端调用的.pb模型,但是有时候我们已经用其他两种方法训练好了如果模型很复杂在训练一次可能花费时间很多代价太大,或者是拿到别人的模型想在Android端调用怎么办呢?
这就要用到今天的“神器”freeze_graph跟之前的saved_model_cli.py文件一样。freeze_graph.py
是Tensorflow官方已经为我们准备好的一个脚本,同样在./tensorflow/python/tools/目录下
SavedModel模型合成.pb文件
首先Win+R 输入cmd+回车 打开控制台,指定路径到生成的模型文件下,如
然后输入
freeze_graph --input_saved_model_dir=./ --output_node_names=output --output_graph=new_model.pb
--input_saved_model_dir=./
是SavedModel模型的路径,这里因为已经指定到当前路径了所以直接=./
--output_node_names
是输出节点的名字,有多个时用逗号分开。用于指定输出节点,将没有在输出线上的其它节点剔除。--output_graph
用来保存整合后的模型输出文件,也就是输出文件的名字。
回车,等待控制台出现如下
然后观察models文件夹中就会多出一个名为new_model.pb
的文件
我们把这个new_model.pb
直接放到上一篇Android DEMO的assets目录中,在更改下模型路径
然后下载到手机上
OK! 完美运行!!
.meta模型合成.pb文件
跟上面步骤一样,Win+R 输入cmd+回车 打开控制台,指定路径到生成的模型文件下,如
这一步输入的就不太一样了,如下
freeze_graph --input_meta_graph=my_model-0.meta --input_binary=true --input_checkpoint=my_model-0 --output_node_names=output --output_graph=./new_models.pb
--input_meta_graph
是要加载的TensorFlow 'MetaGraphDef文件。--input_binary
配合input_graph用,为true时,input_graph为二进制,为false时,input_graph为文件。默认False注意这里一定要填True--input_checkpoint
检查点数据文件。训练时,给Saver用于保存权重、偏置等变量值。这时用于模型恢复变量值。--output_node_names
是输出节点的名字,有多个时用逗号分开。用于指定输出节点,将没有在输出线上的其它节点剔除。--output_graph
用来保存整合后的模型输出文件,也就是输出文件的保存路径和名字。
然后等待输出:
然后同样把它放到Android的assets目录下,在更改模型路径,然后下载到手机上
仍然完美运行!!!
希望这篇文章对您有帮助,感谢阅读!