Tensorflow 在ML引擎预测上获取错误,但局部预测工作正常

Tensorflow 在ML引擎预测上获取错误,但局部预测工作正常,tensorflow,google-prediction,Tensorflow,Google Prediction,我在这里搜索了很多,但不幸的是找不到答案 我正在本地计算机上运行TensorFlow 1.3(通过MacOS上的PiP安装),并使用“ssd\u mobilenet\u v1\u coco”检查点创建了一个模型 我设法在本地和ML引擎(运行时1.2)上进行培训,并成功地将我的savedModel部署到ML引擎 局部预测(代码下方)运行良好,我得到了模型结果 gcloud ml-engine local predict --model-dir=... --json-instances=reques

我在这里搜索了很多,但不幸的是找不到答案

我正在本地计算机上运行
TensorFlow 1.3
(通过MacOS上的PiP安装),并使用“
ssd\u mobilenet\u v1\u coco
”检查点创建了一个模型

我设法在本地和ML引擎(运行时1.2)上进行培训,并成功地将我的savedModel部署到ML引擎

局部预测(代码下方)运行良好,我得到了模型结果

gcloud ml-engine local predict --model-dir=... --json-instances=request.json

 FILE request.json: {"inputs": [[[242, 240, 239], [242, 240, 239], [242, 240, 239], [242, 240, 239], [242, 240, 23]]]}
但是,在部署模型并尝试在ML-ENGINE上运行远程预测时,请使用以下代码:

gcloud ml-engine predict --model "testModel" --json-instances request.json(SAME JSON FILE AS BEFORE)
我得到这个错误:

{
  "error": "Prediction failed: Exception during model execution: AbortionError(code=StatusCode.INVALID_ARGUMENT, details=\"NodeDef mentions attr 'data_format' not in Op<name=DepthwiseConv2dNative; signature=input:T, filter:T -> output:T; attr=T:type,allowed=[DT_FLOAT, DT_DOUBLE]; attr=strides:list(int); attr=padding:string,allowed=[\"SAME\", \"VALID\"]>; NodeDef: FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/depthwise = DepthwiseConv2dNative[T=DT_FLOAT, _output_shapes=[[-1,150,150,32]], data_format=\"NHWC\", padding=\"SAME\", strides=[1, 1, 1, 1], _device=\"/job:localhost/replica:0/task:0/cpu:0\"](FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/Relu6, FeatureExtractor/MobilenetV1/Conv2d_1_depthwise/depthwise_weights/read)\n\t [[Node: FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/depthwise = DepthwiseConv2dNative[T=DT_FLOAT, _output_shapes=[[-1,150,150,32]], data_format=\"NHWC\", padding=\"SAME\", strides=[1, 1, 1, 1], _device=\"/job:localhost/replica:0/task:0/cpu:0\"](FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/Relu6, FeatureExtractor/MobilenetV1/Conv2d_1_depthwise/depthwise_weights/read)]]\")"
}
{
“错误”:“预测失败:模型执行期间异常:中止错误(代码=StatusCode.INVALID_参数,详细信息=\”NodeDef在Op输出中提到attr'data_format':T;attr=T:type,allowed=[DT_FLOAT,DT_DOUBLE];attr=strips:list(int);attr=padding:string,allowed=[\“SAME\”,“VALID\”]>;nodededef:FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d\u depthwise/depthwise=depthwisecov2dnative[T=DT\u FLOAT,\u output\u shapes=[-1150150,32]],data\u format=\“NHWC\”,padding=“SAME\”,跨距=[1,1,1],\u device=\“/job:localhost/replica:0/任务:0/cpu:0\”](FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d\u 0/Relu6,FeatureExtractor/MobilenetV1/Conv2d\u 1深度/深度/深度权重/读取)\n\t[[节点:FeatureExtractor/MobilenetV1/Conv2d\u 1深度/深度/深度=深度Conv2dNative[t=DT\u浮点,输出形状=[-1150150,32]],数据格式=\“NHWC\”,填充=“相同\”,步幅=[1,1,1,1,1,1,1,1,1,1],\u device=\“/job:localhost/replica:0/task:0/cpu:0\”](FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d\u 0/Relu6,FeatureExtractor/MobilenetV1/Conv2d\u 1\u depthwise/depthwise\u weights/read)]\”
}
我在这里看到了类似的情况:

关于“数据格式”参数的问题。 但不幸的是,我不能使用这个解决方案,因为我已经在TensorFlow 1.3上了

MobilenetV1似乎也有问题:https://github.com/tensorflow/models/issues/2153

有什么想法吗?

我也有类似的想法。这个问题是因为用于训练和推理的Tensorflow版本不匹配。我通过使用Tensorflow-1.4进行训练和推理解决了这个问题


请参考答案。

如果您想知道如何确保您的模型版本正在运行您需要运行的正确tensorflow版本,请首先查看以下内容

您需要知道哪个模型版本支持所需的Tensorflow版本。撰写本文时:

  • ML版本1.4支持TensorFlow 1.4.0和1.4.1
  • ML版本1.2支持TensorFlow 1.2.0和
  • ML版本1.0支持TensorFlow 1.0.1
现在您已经知道需要哪个模型版本,您需要从模型中创建一个新版本,如下所示:

gcloud ml-engine versions create <version name> \
--model=<Name of the model> \
--origin=<Model bucket link. It starts with gs://...> \
--runtime-version=1.4
gcloud ml引擎版本创建\
--型号=\
--原点=\
--运行时版本=1.4
在我的例子中,我需要使用Tensorflow 1.4.1进行预测,所以我使用了运行时版本1.4


请参阅此,以及此

您是如何在本地进行培训并成功地将您的savedModel部署到ML引擎的?这似乎意味着您使用TensorFlow 1.3进行培训,然后使用版本1.2进行预测。嗨,乔治!谢谢您的评论!我确实使用了TF1.3进行培训,可能就是这样。但我该怎么做呢使用1.2进行预测?我可以在gcloud工具或web界面上设置吗?出于模型培训目的,您可以在本地使用TF的1.2版本,代替当前的TF1.3。再次感谢George的评论!最后,我的团队和我决定使用Tensorflow在专用服务器中服务于预测。工作正常到目前为止,在ML引擎上安装了相同的模型。但是我希望有类似问题的人能找到这个线程并尝试你的建议。我也对从谷歌方面获得支持(通过GCP)有多么困难感到失望=(非常感谢!对于我正在进行的项目,我们已经决定不使用GCP-ML,因为这一点,但我一定会检查它。因为我相信你的答案会解决这个问题,我将标记为已解决。我很高兴TF团队解决了这个问题=在Tensorflow 1.9版本中解决了这个问题?我尝试在CloudML中进行预测,但我仍然得到了答案。)同样的错误。