Изображение данных Mnist Python — ошибка при отображении изображения

Я работаю с набором данных 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 привели к ошибке?


person Kristian Nielsen    schedule 22.11.2017    source источник


Ответы (1)


Ошибка, которую вы получаете, связана с тем, что вы предоставляете массив show. show принимает только один логический аргумент hold=True или False.
Чтобы создать график изображения, вам нужно использовать 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()
person ImportanceOfBeingErnest    schedule 22.11.2017
comment
Спасибо, что указали на то, что наш @ImportanceOfBeingErnest! Теперь я точно вижу, что мои манипуляции с текстовым файлом привели к ошибке, ха-ха, тогда вернемся к работе. - person Kristian Nielsen; 22.11.2017