cur_momentum = 0.9 W_inc_rate = (rbm.W_inc * cur_momentum + W_inc) * l_rate hbias_inc_rate = (rbm.hbias_inc * cur_momentum + hbias_inc) * l_rate vbias_inc_rate = (rbm.vbias_inc * cur_momentum + vbias_inc) * l_rate updates = [] updates.append((rbm.W, rbm.W + W_inc_rate)) updates.append((rbm.hbias, rbm.hbias + hbias_inc_rate)) updates.append((rbm.vbias, rbm.vbias + vbias_inc_rate)) updates.append((rbm.W_inc, W_inc)) updates.append((rbm.hbias_inc, hbias_inc)) updates.append((rbm.vbias_inc, vbias_inc)) current_free_energy = rbm.free_energy(rbm.input) monitoring_cost = rbm.get_reconstruction_cost(v_sample) f = theano.function([], [ ph_sample, v_mean, h_mean, vis_probs_fant, hid_probs_fant, W_inc_rate, vbias_inc_rate, hbias_inc_rate, current_free_energy, monitoring_cost ], updates=updates, givens=[(rbm.input, data_dum)]) sumcost = [] def it(i): global sumcost ph_sample, vis_probs_fant, hid_probs_fant, vis_samp, hid_samp, W_inc, vbias_inc, hbias_inc, fen, cost = f( )
cur_momentum = 0.9 W_inc_rate = (rbm.W_inc * cur_momentum + W_inc) * l_rate hbias_inc_rate = (rbm.hbias_inc * cur_momentum + hbias_inc) * l_rate vbias_inc_rate = (rbm.vbias_inc * cur_momentum + vbias_inc) * l_rate updates=[] updates.append( (rbm.W, rbm.W + W_inc_rate)) updates.append((rbm.hbias,rbm.hbias + hbias_inc_rate)) updates.append((rbm.vbias,rbm.vbias + vbias_inc_rate)) updates.append((rbm.W_inc,W_inc)) updates.append((rbm.hbias_inc,hbias_inc)) updates.append((rbm.vbias_inc,vbias_inc)) current_free_energy = rbm.free_energy(rbm.input) monitoring_cost = rbm.get_reconstruction_cost(v_sample) f = theano.function([], [ph_sample, v_mean, h_mean, vis_probs_fant, hid_probs_fant, W_inc_rate, vbias_inc_rate, hbias_inc_rate, current_free_energy, monitoring_cost], updates=updates, givens=[(rbm.input, data_dum)]) sumcost = [] def it(i): global sumcost ph_sample, vis_probs_fant, hid_probs_fant, vis_samp, hid_samp, W_inc, vbias_inc, hbias_inc, fen, cost = f() if i % 10 == 0: print "hid_pos: %s" % ph_sample print "vis_neg: %s" % vis_probs_fant print "hid_neg: %s" % hid_probs_fant print "vis_neg_s: %s" % vis_samp print "hid_neg_s: %s" % hid_samp print "W_inc: %s" % W_inc print "vbias_inc: %s" % vbias_inc
del watches['cost'] del watches['cost_valid'] load_watches(watches) train(rbms, data_sh, data_valid_sh, train_params) valid_set = T.matrix("valid_set0") Dv = T.sum(valid_set, axis=1) [preh, h, hs, prev, v, vs], updates = theano.scan(rbm.gibbs_vhv_mf, outputs_info = [None, None, None, None, None, valid_set], non_sequences = Dv, n_steps=5) cost = rbm.get_reconstruction_cost(vs[-1], valid_set, Dv) get_cost = theano.function([], [cost, vs], updates = updates, givens=[(valid_set, data_valid_sh)]) #train_params['max_epoch'] = 200 #train_params['mean_field'] = False #train_params['cd_steps'] = 5 #train_params['learning_rate'] = 0.01 #rbms.stack[0].need_train = True # #train(rbms, data_sh, data_valid_sh, train_params) #train_params['max_epoch'] = 400 #ae.pretrain(data_sh, data_valid_sh, train_params) #train_params['max_epoch'] = 50 #ae.finetune(data_sh, train_params) #print_top_to_file(ae, train_params, "_sp0.2", data_nop_sh, range(0,100))