【发布时间】: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:
分别为9 和14。
我可能会误解分类器的工作原理,因为我刚刚开始阅读一些关于机器学习主题的教程。我的问题是如何将这些图像从 Pillow 加载到分类器中,并让分类器确定正确的数字?
编辑:
基于@sascha 的 cmets,我更新了代码,但得到的结果不正确。我尝试清理9 图像:
但现在结果要么是7 要么是3。
【问题讨论】:
-
提示:
2352=28*28*3。您以某种方式使用 3 通道(如在 RGB 中)。强制 BW 或灰度(1 位与例如 8 位)1 通道读取。 -
@sascha 感谢您的提示。我已经使用 Pillow 的
convert('LA')转换为灰度,现在我收到关于(1, 1568)的错误。我修改了我的问题以反映这一变化。 -
@sascha 抱歉,我又搞砸了。我在不应该添加的时候添加了 alpha。删除它,我确实得到了一个输出,但
9以7的形式出现。有没有办法让它更准确? -
(是的,它是 LA,这是错误的)。 9 变成 7 没有意义。在图像编辑器中打开文件并进行比较。
-
@sascha 我打开 GIMP 并尝试清理图像。
9要么是白色像素要么是黑色像素。但是现在运行程序会打印出7或3。如果有帮助,我还在帖子中添加了清理后的图像。
标签: python machine-learning tensorflow pillow