File size: 2,172 Bytes
5ffae0a 201b797 5ffae0a d35a8da 5ffae0a d35a8da 5ffae0a d35a8da 5ffae0a d35a8da 5ffae0a d35a8da 5ffae0a 201b797 5ffae0a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
Автоэнкодер - нейронная сеть, которая принимает входные данные и кодирует их, затем пытается восстановить их.
На этапе обучения модель кодирует входные данные и подбирает веса такие, чтобы при попытке их восстановления получилось изображение, максимально похожее на исходное. Размеченные данные не требуются.
Автоэнкодер может полезен для уменьшения размерности данных или удаления шума.
В данной работе выбран автоэнкодер VAE (Variational Autoencoder), тип автоэнкодера, который добавляет вероятностный подход к обучению модели. Используется библиотека keras.
архитектура автоэнкодера:

Количество обучаемых параметров: encoder - 234372, decoder - 202256, всего: 436628
Используемые алгоритмы:
Оптимизатор - adam.
Функция потерь:
def vae_loss(x, y):
x = K.reshape(x, shape=(batch_size, 28*28))
y = K.reshape(y, shape=(batch_size, 28*28))
loss = K.sum(K.square(x-y), axis=-1)
kl_loss = -0.5 * K.sum(1 + z_log_var - K.square(z_mean) - K.exp(z_log_var), axis=-1)
return loss + kl_loss
Размеры обучающего, валидационного и тестового наборов данных, соответственно:
(54000, 28, 28, 1), (6000, 28, 28, 1), (6000, 28, 28, 1)
Ошибка, полученная при сравнении оригинального изображения и полученного из автоэнкодера:
30.429147720336914 (ошибка на тренировочном датасете), 30.770627975463867 (на валидационном), 30.37934112548828 (на тестовом) |