我正在尝试加载我在tensorflow android应用上训练过的模型。我在Caffe中训练了该模型,然后将其转换为Tensorflow,但是我确信这不是问题,因为我使用classify.py对其进行了测试并且可以正常工作。
然后我序列化模型并将其放入.pb中,用我的替换tensorflow_inception_graph.pb(并命名相同)。我可以使用bazel来构建应用程序,但是当我将其安装在手机上并运行时,它立即崩溃。我认为罪魁祸首是以下错误:
F/native (26026): tensorflow_jni.cc:309 Error during inference: Invalid argument: No OpKernel was registered to support Op 'FIFOQueue' with these attrs
F/native (26026): [[Node: processed_queue = FIFOQueue[capacity=1, component_types=[DT_INT32, DT_FLOAT], container="", shapes=[[], [224,224,3]], shared_name=""]()]]
但是我真的不知道如何解决它。
另外,apk中包含整个protobuf。
谢谢您的帮助。
最佳答案
不幸的是,您遇到了TensorFlow的移动构建目标的限制。默认情况下,我们仅包括推理通常所需的操作,不包括FIFOQueue。
假设您实际上不需要在移动设备上进行推理时运行该op,则可以查看使用strip_unused.py脚本并传入输入和输出op名称。这将删除从给定输入节点开始直接产生输出所需的操作以外的所有操作,因此应删除FIFOQueue和其他训练操作。