Что означают метрики точности в автоэнкодере Keras для определения сэмплирования? - PullRequest
0 голосов
/ 10 июня 2019

Я работаю с шумоподавляющим автоэнкодером 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%. Может ли кто-нибудь сказать мне, почему есть разница?

1 Ответ

0 голосов
/ 10 июня 2019

Точность не имеет смысла для проблемы регрессии, поэтому образец keras не использует эту метрику во время autoencoder.compile.

В этом случае keras вычисляет точность согласно этой метрике.

binary_accuracy

def binary_accuracy(y_true, y_pred):
    return K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)

Используя эту неповоротливую реализацию, вы должны получить то же значение, что и вывод Keras для точности проверки в конце обучения.

x_decoded = autoencoder.predict(x_test_noisy)
acc = np.mean(np.equal(x_test, np.round(x_decoded)))
print(acc)

См. Этот ответ для получения более подробной информации: Какая функция определяет точность в Керасе, когда потеря представляет собой среднеквадратическую ошибку (MSE)?

...