Загрузка весов RBM в автоэнкодеры - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь внедрить автоэнкодеры с RBM для уменьшения размерности из этой ссылки . Однако вместо RBM, используемого в этой ссылке, я пытаюсь интегрировать GBRBM, как описано в этой ссылке - https://github.com/meownoid/tensorfow-rbm/tree/master/tfrbm

пока мой код выглядит так -

  gbrbm1 = GBRBM(n_visible=222, n_hidden=128, learning_rate=0.01, momentum=0.95)
  gbrbm2 = GBRBM(n_visible=128, n_hidden=64, learning_rate=0.01, momentum=0.95)
  gbrbm3 = GBRBM(n_visible=64, n_hidden=32, learning_rate=0.01, momentum=0.95)
  gbrbm4 = GBRBM(n_visible=32, n_hidden=2, learning_rate=0.01, momentum=0.95) 
  #GBRBM train
 errs1 = gbrbm1.fit(train_x, n_epoches=50, batch_size=32)
 tr1=gbrbm1.transform(train_x)
 gbrbm1.save_weights('./out/rbmw1.chp','w1')
 ##########
 errs2= gbrbm2.fit(tr1, n_epoches=50, batch_size=32)
 tr1=gbrbm1.transform(train_x)
 tr2=gbrbm2.transform(tr1)
 gbrbm2.save_weights('./out/rbmw2.chp','w2')
 ###############
 errs3= gbrbm3.fit(tr2, n_epoches=50, batch_size=32)
 tr1=gbrbm1.transform(train_x)
 tr2=gbrbm2.transform(tr1)
 tr3=gbrbm3.transform(tr2)
 gbrbm3.save_weights('./out/rbmw3.chp','w3')

Моя модель автоэнкодера выглядит так -

  autoencoder = AutoEncoder(222, [128, 64, 32, 2], [['rbmw1', 'rbmhb1'],
                                                ['rbmw2', 'rbmhb2'],
                                                ['rbmw3', 'rbmhb3'],
                                                ['rbmw4', 'rbmhb4']], tied_weights=False)

Но при попытке загрузить веса RBM следующим образом -

  autoencoder.load_weights('./out/rbmw1.chp')

Я сталкиваюсь со следующей ошибкой -

   Not found: Key rbmhb1 not found in checkpoint

Было бы очень полезно, если бы кто-то помог мне понять, в чем здесь проблема.

...