首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将pb模型文件加载到TensorFlowSharp中

将pb模型文件加载到TensorFlowSharp中
EN

Stack Overflow用户
提问于 2018-05-15 18:28:48
回答 3查看 2.9K关注 0票数 4

我有一些Keras经验,正在学习TensorFlowSharp (https://github.com/migueldeicaza/TensorFlowSharp)。

(我已经使用@jdehesa reply创建了一个.pb文件:How to export Keras .h5 to tensorflow .pb?)

当我在TensorFlowSharp中加载.pb模型文件时,以下代码行失败:

代码语言:javascript
复制
runner.AddInput (graph ["input"] [0], tensor).Fetch (graph ["output"] [0]);

["input"]和图["output"]似乎都是空的。我是否需要命名我的模型中的层?

我使用的Keras模型是VGG16的修改和重新训练版本。

可以在TensorFlowSharp中输出命名层的列表吗?或者是否可以用其他方式引用它们?(按数字?)

EN

回答 3

Stack Overflow用户

发布于 2018-08-21 01:15:36

TFGraph的GetEnumerator()方法允许枚举所有的操作。

代码语言:javascript
复制
List<TFOperation> op_list = new List<TFOperation>( graph.GetEnumerator() );

您可以检查TFOperation名称和OpType以查看图表中的内容。

票数 3
EN

Stack Overflow用户

发布于 2019-05-09 04:18:30

我在使用TensorFlowSharp时也遇到了同样的问题。查找输入和输出名称的最简单方法是将模型加载到Netron (https://github.com/lutzroeder/netron)中,它以可视方式显示模型。您可以单击第一个节点来查看输入的'id:‘和最后一个节点的'name’属性。

票数 2
EN

Stack Overflow用户

发布于 2019-03-21 00:13:54

最后,我找到了两种解决这个问题的方法。一种方法是查看HxD中的pb文件,找到其中的层的名称。输入层很容易在文件的顶部找到:

输出层比较难找到。但是解决这个问题的选项2是命名该层:

代码语言:javascript
复制
outputlayer.name = "output"

但是,在加载层时,名称略有不同,并且包含激活类型。在本例中,它是"output/Softmax",您也可以在pb文件的二进制文件中找到它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50347944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档