我是一位经验丰富的开发人员,是机器学习的新手。我尝试使用Keras / TensorFlow,从mnist_mlp.py示例开始。我在Mac上使用pip安装了Keras和TensorFlow。
为了更好地理解内部工作原理,我不是运行文件(' python mnist_mlp.py'),而是将文件内容剪切并粘贴到Python(2.7.12)中互动窗口。
一切运行正常,我得到98.4%的测试准确度,如该文件的评论中所述。
我接下来要做的是为它提供新颖的输入并使用model.predict()
来查看它的表现。我在GIMP中创建28x28图像并将它们带入我的Python会话(小心地将4通道,8位RGBA图像转换为线性单通道浮点阵列)。
当我把它喂入模型时,我得到的结果看起来很奇怪。有些图像被正确分类,而其他图像则完全偏离。 它们看起来对我来说是完全合理的数字,并且它们非常接近地匹配MNIST集合示例。当我将数组提取出来并查看它看起来没问题时,它似乎不是一个翻转或翻转的问题。当我以相同的方式提供MNIST图像时,它们似乎正常工作。
我不确定这里发生了什么。这是过度拟合的情况吗?为什么验证数据集与测试集相同?
可以在此处找到带有说明的测试图像和python代码: https://s3.amazonaws.com/stackoverflow-47799896/StackOverflow_47799896.zip
感谢。
编辑:我尝试使用convnet示例(mnist_cnn.py)进行相同的测试,结果稍微好一点,但仍有类似的错误。如果有人想尝试,他们可以在readme.py文件中使用相同的函数,但进行这些更改:
import numpy as np
x = np.ndarray((1,28,28,1), dtype='float32')
def l (s):
with open(s, 'rb') as fd:
_ = fd.read(1)
for i in xrange(28):
for j in xrange(28):
v = ord(fd.read(1))
x[0][i][j][0] = v / 255.0
_ = fd.read(3)
编辑2:有趣的是,如果我用MLP案例中的我的图像替换训练数据集中的前19项(60,000中),我会在训练后得到或接近完美预测我的所有图像。这是否表明过度拟合?