我已经使用Azure Custom Vision培训了一个模型并下载了适用于Android的TensorFlow文件 (见:DefaultWeightedEdge)。如何在https://docs.microsoft.com/en-au/azure/cognitive-services/custom-vision-service/export-your-model使用此功能?
我需要一个模型(pb文件)和权重(json文件)。但Azure给了我一个.pb和一个带标签的文本文件。
从我的研究中我也了解到还有不同的pb文件,但我无法找到Azure Custom Vision导出的类型。
我找到了tensorflow.js。这是将TensorFlow SavedModel(Azure中的* .pb文件是SavedModel?)或Keras模型转换为Web友好格式。但是我需要填写" output_node_names" (我怎么得到这些?)。我也不是100%确定Android的pb文件是否等于" tf_saved_model"。
我希望有人有提示或起点。
答案 0 :(得分:3)
只模仿我说的here即可为您节省点击。我希望直接导出到tfjs的选项很快可用。
这些是我为使导出的TensorFlow模型对我有用的步骤:
input_filepath
是.pb模型文件的路径,而output_filepath
是将要创建的更新的.pb文件的完整路径。 import tensorflow as tf
def ReplacePadV2(input_filepath, output_filepath):
graph_def = tf.GraphDef()
with open(input_filepath, 'rb') as f:
graph_def.ParseFromString(f.read())
for node in graph_def.node:
if node.op == 'PadV2':
node.op = 'Pad'
del node.input[-1]
print("Replaced PadV2 node: {}".format(node.name))
with open(output_filepath, 'wb') as f:
f.write(graph_def.SerializeToString())
--input_format
设置为tf_frozen_model
,并将output_node_names
设置为model_outputs
。这是我使用的命令。tensorflowjs_converter --input_format=tf_frozen_model --output_json=true --output_node_names='model_outputs' --saved_model_tags=serve path\to\modified\model.pb folder\to\save\converted\output
理想情况下,tf.loadGraphModel('path/to/converted/model.json')
现在应该可以工作(已针对tfjs 1.0.0及更高版本进行测试)。
答案 1 :(得分:0)
部分答案:
尝试实现同一目标-这是答案的开始-利用output_node_names:
tensorflowjs_converter --input_format=tf_frozen_model --output_node_names='model_outputs' model.pb web_model
我不确定如何将其合并到同一代码中-您有@Kasper Kamperman吗?