Я работаю с шумоподавляющим автоэнкодером Keras;
https://keras.io/examples/mnist_denoising_autoencoder/
При компиляции я использую следующие опции:
autoencoder.compile(loss='mse', optimizer= Adadelta, metrics=['accuracy'])
После обучения. Я специально тренировался БЕЗ использования шумовой тренировки data(x_train_noisy)
, но просто пытался восстановить x_train
.
autoencoder.fit(x_train, x_train, epochs=30, batch_size=128)
После обучения 60 000 вводов цифр MNIST это дает мне точность 81,25%. Означает ли это, что 60000 * 81,25% изображений ИДЕАЛЬНО восстановлено (что соответствует исходному входному пикселю за пикселем), то есть 81,25% выходных изображений из автоматического кодера имеют ИДЕНТИЧНЫЙ их входные аналоги или что-то еще?
Кроме того, я также провел ручную проверку, сравнивая выходные данные и исходные данные (матрицы 60000 × 28x28) попиксельно - считая ненулевые элементы по их различиям:
x_decoded = autoencoder.predict(x_train)
temp = x_train*255
x_train_uint8 = temp.astype('uint8')
temp = x_decoded*255
x_decoded_uint8 = temp.astype('uint8')
c = np.count_nonzero(x_train_uint8 - x_decoded_uint8)
cp = 1-c /60000/28/28
Тем не менее, cp составляет всего около 71%. Может ли кто-нибудь сказать мне, почему есть разница?