我有一些Keras经验,正在学习TensorFlowSharp (https://github.com/migueldeicaza/TensorFlowSharp)。
(我已经使用@jdehesa reply创建了一个.pb文件:How to export Keras .h5 to tensorflow .pb?)
当我在TensorFlowSharp中加载.pb模型文件时,以下代码行失败:
runner.AddInput (graph ["input"] [0], tensor).Fetch (graph ["output"] [0]);图["input"]和图["output"]似乎都是空的。我是否需要命名我的模型中的层?
我使用的Keras模型是VGG16的修改和重新训练版本。
可以在TensorFlowSharp中输出命名层的列表吗?或者是否可以用其他方式引用它们?(按数字?)
发布于 2018-08-21 01:15:36
TFGraph的GetEnumerator()方法允许枚举所有的操作。
List<TFOperation> op_list = new List<TFOperation>( graph.GetEnumerator() );您可以检查TFOperation名称和OpType以查看图表中的内容。
发布于 2019-05-09 04:18:30
我在使用TensorFlowSharp时也遇到了同样的问题。查找输入和输出名称的最简单方法是将模型加载到Netron (https://github.com/lutzroeder/netron)中,它以可视方式显示模型。您可以单击第一个节点来查看输入的'id:‘和最后一个节点的'name’属性。
发布于 2019-03-21 00:13:54
最后,我找到了两种解决这个问题的方法。一种方法是查看HxD中的pb文件,找到其中的层的名称。输入层很容易在文件的顶部找到:

输出层比较难找到。但是解决这个问题的选项2是命名该层:
outputlayer.name = "output"但是,在加载层时,名称略有不同,并且包含激活类型。在本例中,它是"output/Softmax",您也可以在pb文件的二进制文件中找到它。
https://stackoverflow.com/questions/50347944
复制相似问题