没有OpKernel注册支持Op'DecodeJpeg'与ios上的这些attrs

时间:2017-08-24 09:46:07

标签: ios objective-c machine-learning tensorflow deep-learning

我已经按照Tensorflow For Poets(link)的步骤使用tensorflow训练我自己的数据集,并获得非常好的预测结果。这为我提供了retrained.py,label_images.py,retrained_graph.pb,retrained_labels .txt files。所以我有自己的模型图和标签文件。

之后我从github下载了适用于iOS的Tensorflow示例项目。该项目在iOS平台上成功运行。但当我使用我自己的retrained_graph.pb,retrained_labels.txt文件代表示例模型和标签文件时,我收到如下错误 -

错误:

无法创建TensorFlow Graph:无效参数:没有注册OpKernel以支持使用这些attrs的Op'DecodeJpeg'。已注册的设备:[CPU],已注册的内核:

[[Node:DecodeJpeg = DecodeJpegacceptable_fraction = 1,channels = 3,dct_method =“”,fancy_upscaling = true,ratio = 1,try_recover_truncated = false]]

和,

无法加载模型:无效参数:没有注册OpKernel以支持使用这些attrs的Op'DecodeJpeg'。已注册的设备:[CPU],已注册的内核:

[[Node:DecodeJpeg = DecodeJpegacceptable_fraction = 1,channels = 3,dct_method =“”,fancy_upscaling = true,ratio = 1,try_recover_truncated = false]]

你能帮帮我吗?我一直在寻找它。 感谢

2 个答案:

答案 0 :(得分:0)

您正在将图像解码操作放在GPU上,而此操作仅适用于在CPU上执行。

来自documentation

  

如果您希望TensorFlow自动选择现有且受支持的设备以在指定的设备不​​存在的情况下运行操作,则可以在创建会话时在配置选项中将allow_soft_placement设置为True。 / p>

因此,您只需使用

更改会话初始化
 tf.Session(config=tf.ConfigProto(
  allow_soft_placement=True))

答案 1 :(得分:0)

iOS上的TensorFlow是PC的子集,它不包含某些使用过多内存的功能。

您可以将CoreML支持的pb文件转换为

此工具可能会帮助您tf-coreml