TFJS_Layers_Model和tfjs_graph_Model之间的差异 [英] Difference between tfjs_layers_model and tfjs_graph_model

查看:7
本文介绍了TFJS_Layers_Model和tfjs_graph_Model之间的差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

tensorflowjs converter具有输出格式

tfjs_layers_modeltfjs_graph_model

这两者有什么不同?是否有使用建议?

推荐答案

有关这方面的信息似乎散布在下面链接的几个Repos和网站上,所以我已经做了🙂的侦察工作。


TFJS的2种格式

TensorFlow.js层模型:JSON+二进制权重文件,具有有限(Kera)功能。在这种情况下,权重似乎是可选的。 和来自TensorFlow JSdocs

此模式不适用于TensorFlow SavedModel或其转换后的表单。对于这些模型,请使用tf.loadGraphModel()。加载的模型支持原始keras或tf.keras模型的完整推理和训练(例如,迁移学习)功能。

TensorFlow.js图形模型:JSON+二进制权重文件,可转换to/fromSavedModel,但无训练能力。关于图形模型,README说:

加载的模型只支持推理,但由于TensorFlow进行了图形优化,推理速度通常比tfjs_Layers_Model(见上一行)快。此转换路线的另一个限制是它还不支持某些层类型(例如,LSTM等循环层)。

其中JSON文件包含:

  • 元数据(格式:‘GRAPH-MODEL’,ConvertedBy:";TensorFlow.js Converter v1.1.2&Quot;,GeneratedBy:";2.0.0-Dev20190603&Quot;)
  • Model Topology:描述所有节点(Relu、Conv2D Bias、Conv2D Weight)以及它们之间的关系。
  • 权重清单:权重文件可以拆分成多个文件(如group1-shard1of2.bingroup1-shard2of2.bin或ResNet、group1-shard9of12.bin

应在何时保存到层模型?

从来没有!始终保存为SavedModel,并在TFJS需要时转换为图形模型。在TensorFlow 2中,所有内容都可以保存到SavedModel中,但不能转换为层模型(只是不支持),而只能转换为图形模型。您也更有可能在互联网上找到保存的模型,而不是keras_saved_model。(它是TFHub的标准格式)。保持简单,保存为SavedModel,并在TFJS中根据需要转换为图表模型,TensorFlow团队似乎也推荐使用SavedModel,根据YouTube上的this slide

在Kera可以输出到SavedModel之前,我认为Layers格式是‘Go-to’格式。现在,您只需保存到SavedModel并将模型转换为图形模型格式。谷歌发布的tensorflow.js模型似乎都是以图形模型格式发布的。我找不到一个层模型。

TensorFlow.js层目前仅支持使用标准Kera构造的Kera模型。source, and example usage of layer models

不幸的是,这些图模型无法转换回.tflite。如果有人知道怎么做,请让我知道!

这篇关于TFJS_Layers_Model和tfjs_graph_Model之间的差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆