【问题标题】:Image of Mnist data Python - Error when displaying the imageMnist 数据 Python 的图像 - 显示图像时出错
【发布时间】:2017-11-22 17:50:00
【问题描述】:

我正在使用 Mnist 数据集,以了解机器学习,目前我正尝试将 Mnist 数据集中的第一个数字显示为图像,但遇到了问题。

我有一个尺寸为 784x10000 的矩阵,其中每一列都是数据集中的一个数字。我自己创建了矩阵,因为 Mnist 数据集以文本文件的形式出现,这本身给我带来了很多问题,但这本身就是一个问题。

下面的 MN_train 矩阵是我的 784x10000 大矩阵。所以我在下面要做的是填充一个 28x28 矩阵,以显示我的图像。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

grey = np.zeros(shape=(28,28))
k = 0

for l in range(28):
    for p in range(28):
        grey[p,l]=MN_train[k,0]
        k = k + 1
print grey
plt.show(grey) 

但是当我尝试显示图像时,出现以下错误:

具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()

后面是一个看起来不像数字五的图像,正如我所期望的那样。

是否有什么我忽略了,或者这是否告诉我为了构造 MN_train 矩阵而对文本文件的操作导致了错误?

【问题讨论】:

    标签: python matplotlib mnist


    【解决方案1】:

    您得到的错误是因为您将数组提供给showshow 只接受一个布尔参数 hold=TrueFalse
    为了创建图像图,您需要使用imshow

    plt.imshow(grey)
    plt.show()  # <- no argument here
    

    还要注意循环效率很低。您可以只重塑输入列数组。

    完整的代码如下所示

    import numpy as np
    import matplotlib.pyplot as plt
    
    MN_train = np.loadtxt( ... )
    
    grey = MN_train[:,0].reshape((28,28))
    
    plt.imshow(grey)
    plt.show()
    

    【讨论】:

    • 感谢您指出我们的@ImportanceOfBeingErnest!现在我可以肯定地看到我对文本文件的操作导致了一个错误哈哈然后回去工作。
    猜你喜欢
    • 2016-11-13
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2016-10-23
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多