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.

архитектура автоэнкодера:
![](sum.png "Параметры модели")

Количество обучаемых параметров: 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 (на тестовом)