我训练了一个头发识别模型(.pb文件)。它与python代码一起工作正常。输入节点是' hair_recognition / input_1'但是当我在android中使用该模型时,我得到以下错误:
java.lang.IllegalArgumentException: No Operation named [hair_recognition/input_1]
我通过在Python和Python中打印节点名称来调试模型。 Android系统。但无法弄清楚原因。 有关可能导致此行为的原因的任何建议吗?
代码 - 加载模型&获取输入张量节点
Python:
with tf.gfile.GFile(pb_file, "rb") as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
with tf.Graph().as_default() as ')graph:
tf.import_graph_def(graph_def, name='hair_recognition')
for op in graph.get_operations():
print(op.name)
x = graph.get_tensor_by_name('hair_recognition/input_1:0')
Android:
inferenceInterface.feed(
INPUT_NODE, floatValues, 1, bitmap.getWidth(), bitmap.getHeight(), 3);
答案 0 :(得分:3)
我自己早些时候遇到过类似的问题。
原因是您使用前缀字符串 - hair_recognition
在python中加载模型。所以你的输入张量有这个名字。
将前缀更改为其他值,例如'。'或空字符串。它应该也适用于那种情况。
在Android传递input_1:0
而不是hair_recognition/input_1:0
到INPUT_NODE
。并且应该解决错误。