TFJS_Layers_Model和tfjs_graph_Model之间的差异 [英] Difference between tfjs_layers_model and tfjs_graph_model
问题描述
tensorflowjs converter
具有输出格式
tfjs_layers_model
,tfjs_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.bin
、group1-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屋!