【发布时间】:2016-09-19 16:37:05
【问题描述】:
我想在 android 上测试 Python 下的学习模型,我使用的是 Tensorflow 0.9。 为此,我冻结了我的图表,使其拥有一个包含图表和权重的 pb 文件。我使用队列来管理我的学习批次。
在 Android 上运行我的会话时,我通过名称“input_node”指定输入张量,这是我网络中的数据层作为输入。
X = tf.reshape(X, [-1, W, H, 1], name="input_node")
并调用“output_node”层:
output = tf.reshape(h_fc11, shape=[-1, 8], name="output_node")
这里是 tensorflow_jni.cc 中的调用:
std::vector<std::pair<std::string, tensorflow::Tensor> > input_tensors({{"input_node", input_tensor}});
s = session->Run(input_tensors, output_names, {}, &output_tensors);
批量生成是之前完成的,所以在测试时不应该使用它。 但我有以下错误: tensorflow_jni.cc:312 推理期间出错:参数无效:没有注册 OpKernel 以支持具有这些属性的 Op 'RandomShuffleQueue' [[节点:shuffle_batch/random_shuffle_queue = RandomShuffleQueuecapacity=10750,component_types=[DT_FLOAT,DT_FLOAT],container="",min_after_dequeue=10000,seed=0,seed2=0,shapes=[[10000],[8]],shared_name =""]]
好像调用了批量生成层(我的图片是100x100,我有8个输出),但是不知道为什么。
通过直接在 Mac 上的 image_labelling.cc(使用 Bazel 构建)测试具有相同输入/输出层的相同模型时,我没有错误。
我不明白为什么在测试时需要 RandomShuffleQueue。我是否遗漏了一些东西来指定我想要使用的图表部分?图表的所有层即使不使用也验证了吗?
谢谢。
【问题讨论】:
标签: android c tensorflow deep-learning