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/目录下

pb是tensorflow的模型文件吗 tensorflow pb模型加载_tensorflow

SavedModel模型合成.pb文件

首先Win+R 输入cmd+回车 打开控制台,指定路径到生成的模型文件下,如

pb是tensorflow的模型文件吗 tensorflow pb模型加载_Tensorflow_02


pb是tensorflow的模型文件吗 tensorflow pb模型加载_pb是tensorflow的模型文件吗_03


然后输入

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用来保存整合后的模型输出文件,也就是输出文件的名字。

回车,等待控制台出现如下

pb是tensorflow的模型文件吗 tensorflow pb模型加载_tensorflow_04


然后观察models文件夹中就会多出一个名为new_model.pb的文件

pb是tensorflow的模型文件吗 tensorflow pb模型加载_tensorflow_05

我们把这个new_model.pb直接放到上一篇Android DEMO的assets目录中,在更改下模型路径

pb是tensorflow的模型文件吗 tensorflow pb模型加载_Android_06

然后下载到手机上

pb是tensorflow的模型文件吗 tensorflow pb模型加载_pb是tensorflow的模型文件吗_07


OK! 完美运行!!

.meta模型合成.pb文件

跟上面步骤一样,Win+R 输入cmd+回车 打开控制台,指定路径到生成的模型文件下,如

pb是tensorflow的模型文件吗 tensorflow pb模型加载_pb是tensorflow的模型文件吗_08

pb是tensorflow的模型文件吗 tensorflow pb模型加载_人工智能_09


这一步输入的就不太一样了,如下

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用来保存整合后的模型输出文件,也就是输出文件的保存路径和名字。

然后等待输出:

pb是tensorflow的模型文件吗 tensorflow pb模型加载_pb是tensorflow的模型文件吗_10


pb是tensorflow的模型文件吗 tensorflow pb模型加载_Android_11


然后同样把它放到Android的assets目录下,在更改模型路径,然后下载到手机上

pb是tensorflow的模型文件吗 tensorflow pb模型加载_tensorflow_12


pb是tensorflow的模型文件吗 tensorflow pb模型加载_pb是tensorflow的模型文件吗_13


仍然完美运行!!!
希望这篇文章对您有帮助,感谢阅读!