问题描述
我有一个TensorFlow模型(一个一维CNN)现在要在.NET中实现。
为此,我需要知道Input和Output节点。
当我在Netron上上传模型时,根据我的保存方法,会得到不同的图,唯一看起来正确的图来自h5上传。这是model.summary()
:
如果我将模型另存为h5 model.save("Mn_pb_model.h5")
,然后将其加载到Netron中以图形化,那么一切看起来都是正确的:
但是,ML.NET将不接受h5格式,因此需要将其另存为pb。
在查看在ML.NET中采用TensorFlow的示例时,此sample显示了以与SavedModel格式相似的格式保存的TensorFlow模型-由TensorFlow推荐(也由ML推荐) .NET here“下载未冻结的[SavedModel格式] ...”)。但是,当将pb文件保存并加载到Netron中时,我得到了:
然后放大一点(在最右边),
如您所见,它看起来并不像它应该的。
此外,输入节点和输出节点不正确,因此它不适用于ML.NET(我认为有些问题)。
我正在使用TensorFlow中的recommended way来确定“输入/输出”节点:
当我尝试获取frozen图并将其加载到Netron时,乍一看它是正确的,但我不认为这是正确的:
有四个原因我认为这是不正确的。
- 它与以h5格式上传(对于我来说是正确的)时的图表有很大不同。
- 正如您从前面看到的那样,我在整个过程中都使用1D卷积,这表明它已转为2D(并保持这种状态)。
- 此文件大小为128MB,而TensorFlow to ML.NET示例中的文件大小仅为252KB。甚至Inception模型也只有56MB。
- 如果我在TensorFlow中加载Inception模型并将其另存为h5,则它看起来与ML.NET资源中的模型相同,但是当我将其另存为冻结图时,它看起来却有所不同。 如果我采用相同的模型并将其保存为推荐的
SavedModel
格式,则会显示所有混乱的Netron信息。采取任何所需的模型并将其保存在推荐的{{1} }格式,您会自己看到的(我已经在许多不同的型号上尝试过)。
另外,在用它的图查看Inception的SavedModel
时,它与它的图相似,就像我的model.summary()
在h5图上一样。
似乎应该有一种更简单的方法(以及正确的方法)来保存TensorFlow模型,以便可以在ML.NET中使用。
请显示您建议的解决方案有效:在您提供的答案中,请检查其是否有效(加载model.summary()
模型[此模型也应具有pb
文件夹,以便将其用于ML.NET]并放入Netron,并显示它与Variables
模型相同(例如,对其进行截图)。因此,我们都在尝试相同的事情,这是MNIST ML速成课程示例的link。运行该程序只需不到30秒钟,便可以生成一个名为h5
的模型。在这里,您可以根据自己的方法将其保存并上传,以查看Netron上的图形。这是my_model
模型上传:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)