def get_CRBM(how_long=4000): print "Creating data...." mean1 = np.array([-0.2, 0.3]) mean2 = np.array([0.5, -0.5]) cov1 = np.array([[0.02, 0.005], [0.001, 0.01]]) cov2 = np.array([[0.02, 0.0], [0.0, 0.02]]) dataset = np.random.multivariate_normal(mean1, cov1, 200).tolist() dataset += np.random.multivariate_normal(mean2, cov2, 200).tolist() r = CRBM(2, 4) # Train at the following learning rates: print "Training..." for i in range(how_long): print ' ' + str(i) + '...', r.train_epoch(dataset, (0.9, 0.9), 20) E = np.sum([r.energy(data) for data in dataset]) print 'Energy = ' + str(E) + '...', print 'Done' return r, dataset
def get_CRBM(how_long=4000): print "Creating data...." mean1 = np.array([-0.2, 0.3]) mean2 = np.array([0.5, -0.5]) cov1 = np.array([[0.02, 0.005], [0.001, 0.01]]) cov2 = np.array([[0.02, 0.0], [0.0, 0.02]]) dataset = np.random.multivariate_normal(mean1, cov1, 200).tolist() dataset += np.random.multivariate_normal(mean2, cov2, 200).tolist() r = CRBM(2, 4) # Train at the following learning rates: print "Training..." for i in range(how_long): print " " + str(i) + "...", r.train_epoch(dataset, (0.9, 0.9), 20) E = np.sum([r.energy(data) for data in dataset]) print "Energy = " + str(E) + "...", print "Done" return r, dataset
plt.draw() f.show() # Make a CRBM print "Creating RBM" rbm = CRBM(2,20) rbm.lo = -2 rbm.hi = 2 # Train it k=20 for i in range(10000): #for i in range(0): err = rbm.train_epoch(dataset, 0.1, k) if i%10 == 0: print "Epoch", i, ": Error =", err # Now reconstruct some stuff XY_rec = np.random.uniform(-2,2,(100,2)) for i in range(100): v0 = np.array([XY_rec[i,:]]).transpose() for j in range(20): h0 = rbm.sample_hidden(v0) v0 = rbm.sample_visible(h0) XY_rec[i,0] = v0[0,0] XY_rec[i,1] = v0[1,0] # Finally, draw the sampled points