在android中找不到TF模型输入节点

时间:2018-04-14 17:48:27

标签: android python tensorflow

我训练了一个头发识别模型(.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);

1 个答案:

答案 0 :(得分:3)

我自己早些时候遇到过类似的问题。 原因是您使用前缀字符串 - hair_recognition在python中加载模型。所以你的输入张量有这个名字。 将前缀更改为其他值,例如'。'或空字符串。它应该也适用于那种情况。

在Android传递input_1:0而不是hair_recognition/input_1:0INPUT_NODE。并且应该解决错误。