Tensorflow训练模型的验证准确性超过95%,真实世界的表现非常低,为什么?

时间:2019-02-27 21:52:32

标签: tensorflow classification

我使用retrain.py和Google的Inception V3开发了图像分类模型。经过培训,我的验证准确率超过95%。我用了将近400个好图像和500个差的图像。我做了两个训练模型,如下所示。它们是114x114像素的颜色和大小。

enter image description here

但是,尽管训练模型中有很多数据,但我从真实图像中获得了约50%的准确性。我使用了类似的图像集进行训练。当我使用分类训练中使用的相同图像时,分类结果也很差。
培训参数如下: enter image description here

我使用了Tensorflow服务服务器,并通过REST API连接了客户端,以获取预测结果。客户端的一部分:

image1 = img_to_array(image.load_img(img, target_size=(128,128))) / 255
    payload = {
          "instances": [{"image":image1.tolist()},
    ]
    }
    r = session.post('http://localhost:8501/v1/models/img_model/versions/2:predict', json=payload)

当前响应如下:(无类名)

{“预测”:[[1.0,8.76629e-16,8.01088e-27,1.86624e-16,3.77703e-28]]}

由于上述方法未返回类标签,因此我假设其始终按相同的顺序发送数字。[好值,坏值]:类似于我在训练中使用的方法。

感谢您的帮助,以了解此处的问题。

1 个答案:

答案 0 :(得分:0)

请求格式

{
  // Optional: serving signature to use.
  // If unspecifed default serving signature is used.
  "signature_name": <string>,

  // Optional: Common context shared by all examples.
  // Features that appear here MUST NOT appear in examples (below).
  "context": {
    "<feature_name3>": <value>|<list>
    "<feature_name4>": <value>|<list>
  },

  // List of Example objects
  "examples": [
    {
      // Example 1
      "<feature_name1>": <value>|<list>,
      "<feature_name2>": <value>|<list>,
      ...
    },
    {
      // Example 2
      "<feature_name1>": <value>|<list>,
      "<feature_name2>": <value>|<list>,
      ...
    }
    ...
  ]
}

响应格式

{
  "result": [
    // List of class label/score pairs for first Example (in request)
    [ [<label1>, <score1>], [<label2>, <score2>], ... ],

    // List of class label/score pairs for next Example (in request)
    [ [<label1>, <score1>], [<label2>, <score2>], ... ],
    ...
  ]
}

编辑:-,我认为您正在使用的是 PREDICT 的请求格式。我将您重定向到TFX_API。请检查此链接以了解有关响应和请求格式的更多信息。