Денормализация данных MNIST не возвращает мне то же самое - PullRequest
0 голосов
/ 19 сентября 2018

Это часть моего обучения.Я понял, что нормализация действительно помогает повысить точность и, следовательно, делится на 255 значений mnist.Это разделит все пиксели на 255, и, следовательно, все пиксели 28 * 28 будут иметь значения в диапазоне от 0,0 до 1,0.

Теперь я устал умножать то же самое на 255, это по сути означает, что мы должнывернуть первоначальное значение.но когда я показываю картинку, оригинал и ненормализованные картинки отличаются.

(trainX, trainY), (testX, testY) = mnist.load_data()


plt.subplot(2,2,1)
plt.imshow(trainX[143])

trainX /= 255

plt.subplot(2,2,2)
plt.imshow(trainX[143])


trainX *= 255

plt.subplot(2,2,3)
plt.imshow(trainX[143])
plt.show()

Выход:

enter image description here

Чего мне не хватает ?.Что-нибудь связанное с типом данных float и int входных данных?

1 Ответ

0 голосов
/ 19 сентября 2018

MNIST хранится в виде массивов 28x28 uint8, когда вы делите на 255, он преобразует данные в число с плавающей запятой, чтобы выполнить деление, которое заканчивается как массив с плавающей точкой.Поэтому, когда вы умножаете на 255, он все еще является массивом с плавающей запятой, и matplotlib может интерпретировать его по-разному в целях построения графика.

Чтобы это работало правильно, вы должны привести данные к uint8, например:

trainX = (trainX * 255).astype(np.uint8)

Тогда он должен правильно построить график.

...