我目前正在试验使用CNN的超分辨率。为了服务于我的模型,我需要先把它变成一个.pb文件,对吗?作为一个新手,我真的不知道该怎么做。我的模型基本上是这样的:
低分辨率输入图像->双三次缩放(2x) ->馈送到CNN -> CNN输出图像,分辨率相同(2x)。
我的模型有三个简单的层次。输出层称为“输出”。你可以在这里找到模型:
https://github.com/pinae/Superresolution
它这样节省了它的进展:
我想办法做到这一点。
这似乎是为多个输出节点(为了标识)而不是为只有一个输出的超分辨率而做的。我不知道如何修改这个脚本以供我使用。
第二:使用freeze_graph.py
再说一次,我完全不知道该如何在我的模型中使用这个。所有的例子似乎都是基于MNIST教程。
谢谢!
发布于 2017-08-01 12:22:58
不明白您的意思,但在元流文章中,他还使用了一个输出节点。您可以根据命名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/predictions中,准确性是一个前缀。因此,打印存储在检查点中的所有变量名是有意义的。
顺便说一句,从Tf1.0开始,您可以使用SavedModelBuilder保存模型。这是首选的方法,因为它提供了跨多种语言的兼容性。唯一的警告是,它仍然不是一个单一的文件,但与Tensorflow服务很好地工作。
https://stackoverflow.com/questions/45433231
复制相似问题