[英]Freezing a CNN tensorflow model into a .pb file
我目前正在尝试使用CNN进行超分辨率。 要为我的模型提供服务,我需要先将其保存为.pb文件,对吗? 作为一个新手,我真的不知道该怎么做。 我的模型基本上是这样的:
低分辨率输入图像->双三次缩放(2x)->馈入CNN->具有相同(2x)分辨率的CNN输出图像。
我的模型有3个简单层。 输出层称为“输出”。 您可以在这里找到模型:
https://github.com/pinae/Superresolution
这样可以保存进度:
我看到这样做的方法。
首先:遵循本教程: https : //blog.metaflow.fr/tensorflow-how-to-freeze-a-model-and-serve-it-with-a-python-api-d4f3596b3adc
这似乎是针对多个输出节点(用于标识),而不是针对仅具有一个输出的超分辨率。 我不知道如何修改该脚本以供使用。
第二:使用freeze_graph.py
同样,我完全迷失了如何在模型中使用它。 所有示例似乎都基于MNIST教程。
谢谢!
不明白您的意思,但是在metaflow文章中,他还使用了一个输出节点。 您可以根据tensor
命名方式添加多个。
在这种情况下,请查看network.py
。 您需要查看output_layer
:
self.output = self.conv_layer("reconstruction_layer", self.layer_params[-1],
non_linear_mapping_layer, linear=True)
如您所见,由于conv_layer
,它已经是名称,因此在元流代码中,您需要执行以下操作:
def freeze_graph(model_folder):
# We retrieve our checkpoint fullpath
checkpoint = tf.train.get_checkpoint_state(model_folder)
input_checkpoint = checkpoint.model_checkpoint_path
# We precise the file fullname of our freezed graph
absolute_model_folder = "/".join(input_checkpoint.split('/')[:-1])
output_graph = absolute_model_folder + "/frozen_model.pb"
# Before exporting our graph, we need to precise what is our output node
# This is how TF decides what part of the Graph he has to keep and what part it can dump
# NOTE: this variable is plural, because you can have multiple output nodes
output_node_names = "reconstruction_layer"
...
注意:有时它在命名中带有前缀,例如Accuracy是元流文章Accuracy/predictions
的前缀。 因此,打印出您存储在检查点中的所有变量名称是有意义的。
顺便说一句,从TF 1.0开始,您可以使用SavedModelBuilder
保存模型。 这是首选方法,因为它提供了跨多种语言的兼容性。 唯一需要注意的是,它仍然不是一个文件,但可以与Tensorflow Serving一起很好地工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.