Как добавить штраф за расхождение Kullback-Leibler для разреженного автоэнкодера в интерфейсе Keras для R? - PullRequest
0 голосов
/ 24 июня 2019

Я хотел бы обучить разреженный автоматический кодировщик с некоторым параметром разреженности, основанным на KL-дивергенции. До сих пор мне удалось только нормализовать по норме L1 или L2, добавив

activity_regularizer = regularizer_l1(0.5)

в layer_dense () в интерфейсе Keras для R. Как добавить штраф KL для параметра разреженности rho?

примечания: https://web.stanford.edu/class/cs294a/sparseAutoencoder.pdf

Теперь мой код выглядит так:

 sparse_AE <- keras_model_sequential()
 sparse_AE %>%
   layer_dense(units = ncol(x_train), activation = "sigmoid", input_shape = ncol(x_train), activity_regularizer = regularizer_l1(0.5)) %>%
   layer_dense(units = 100, activation = "sigmoid", activity_regularizer = regularizer_l1(0.5), name = "bottleneck") %>%
   layer_dense(units = ncol(x_train), activation = "sigmoid", activity_regularizer = regularizer_l1(0.5)) %>%
   layer_dense(units = ncol(x_train))

sparse_AE %>% compile(
   loss = "mean_squared_error", 
   optimizer = "adam"
)

sparse_AE %>% fit(
   x = x_train, 
   y = x_train, 
   epochs = 500,
   verbose = 0
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...