【问题标题】:Testing Pillow Image against Tensorflow model created from MNIST?根据 MNIST 创建的 Tensorflow 模型测试 Pillow Image?
【发布时间】:2017-12-07 19:26:53
【问题描述】:

我浏览了MNIST For ML Beginners 上的基本示例,他们从 MNIST 数据库创建了一个简单的数字分类器,非常酷。

他们的教程代码是mnist_softmax.py,但他们使用分类器来处理自己的测试图像。我想在我自己从 Pillow 加载的图像上尝试一下。

这是我修改的部分:

  from PIL import Image

  # Test trained model
  img = Image.open("09.png").convert('L')
  data = np.ndarray.flatten(np.array(img))
  result = sess.run(tf.argmax(y,1), feed_dict={x: [data]})
  print (' '.join(map(str,result)))

但是这个错误:

ValueError: Cannot feed value of shape (1, 1568) for Tensor u'Placeholder:0', which has shape '(?, 784)'

我使用的图片是 28x28:

分别为914

我可能会误解分类器的工作原理,因为我刚刚开始阅读一些关于机器学习主题的教程。我的问题是如何将这些图像从 Pillow 加载到分类器中,并让分类器确定正确的数字?


编辑: 基于@sascha 的 cmets,我更新了代码,但得到的结果不正确。我尝试清理9 图像:

但现在结果要么是7 要么是3

【问题讨论】:

  • 提示2352=28*28*3。您以某种方式使用 3 通道(如在 RGB 中)。强制 BW 或灰度(1 位与例如 8 位)1 通道读取。
  • @sascha 感谢您的提示。我已经使用 Pillow 的convert('LA') 转换为灰度,现在我收到关于(1, 1568) 的错误。我修改了我的问题以反映这一变化。
  • @sascha 抱歉,我又搞砸了。我在不应该添加的时候添加了 alpha。删除它,我确实得到了一个输出,但97 的形式出现。有没有办法让它更准确?
  • (是的,它是 LA,这是错误的)。 9 变成 7 没有意义。在图像编辑器中打开文件并进行比较。
  • @sascha 我打开 GIMP 并尝试清理图像。 9 要么是白色像素要么是黑色像素。但是现在运行程序会打印出73。如果有帮助,我还在帖子中添加了清理后的图像。

标签: python machine-learning tensorflow pillow


【解决方案1】:

我可以看到您通过将图像转换为 1 通道解决了形状不匹配问题。现在的问题是您的测试预测是错误的。因此,这说明您的 ML 模型在该测试用例中失败了。

始终计算训练和测试准确度以分析模型性能并了解您的模型面临的问题。

因此,请寻找有关如何改进模型的解决方案。尝试卷积神经网络,增加层数,集成等。

查看this 链接,我在该链接中编写了一个用于数字识别的简单 CNN 模型,其准确度为 99.45。

请参阅 Kaggle 中的其他内核,以了解有关解决同一问题的不同方法的更多信息。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2017-12-06
    • 1970-01-01
    • 2018-02-23
    • 2018-07-27
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2019-04-01
    • 2016-08-24
    相关资源
    最近更新 更多