Как я могу изменить свой код так, чтобы он включал несколько скрытых слоев при реализации сжимающих потерь в сжимающих автоэнкодерах? - PullRequest
0 голосов
/ 23 апреля 2019

Я построил однослойный автоэнкодер, который использует сжимающие потери (код показан). Как я могу изменить код, чтобы включить несколько скрытых слоев? Какие веса мне нужно использовать?

def contractive_loss(x_test, decoded_imgs):

  #Calculating mean square error
  mse = K.mean(K.square(x_test - decoded_imgs), axis=1)
  #W = K.variable(value=model.get_layer('encoded').get_weights()[0])  
  # N x N_hidden
  W = encoder.get_weights()[0]  # N x N_hidden
  W = K.transpose(W)  # N_hidden x N
  #h = model.get_layer('encoded').output
  h = encoder.output
  dh = h * (1 - h)  # N_batch x N_hidden

  # N_batch x N_hidden * N_hidden x 1 = N_batch x 1
  contractive = lam * K.sum(dh**2 * K.sum(W**2, axis=1), axis=1)

  return mse + contractive


autoencoder.compile(optimizer='adadelta', loss=contractive_loss)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...