"""Training of Restricted Boltzmann Machine""" model = RBM(n_visible=28 * 28, n_hidden=144, lr=0.1, l2_coeff=1e-4, momentum_coff=0.5) training_epochs = 5 for epoch in range(training_epochs): # index = 0 img_num = 60000 error = 0 for i in range(img_num): x = x_train[i].reshape(1, 784) error += model.const_divergence(x / 255.0, K=10) error = error / img_num print('Training epoch %d, cost is ' % epoch, error) rbm_weight = open(b"model/rbm_weight.npy", "wb") pickle.dump(model.weight, rbm_weight) rbm_v_bias = open(b"model/rbm_v_bias.npy", "wb") pickle.dump(model.v_bias, rbm_v_bias) rbm_h_bias = open(b"model/rbm_h_bias.npy", "wb") pickle.dump(model.h_bias, rbm_h_bias) # """Plotting and Testing of Restricted Boltzmann Machine""" #
import pickle from struct import unpack import gzip import numpy as np from RBM import RBM #Dataset f = gzip.open("../data/mnist.pkl.gz", "rb") data = pickle.load(f, encoding='bytes') f.close() (x_train, y_train), (x_test, y_test) = data # x_train = x_train.reshape(x_train.shape[0],x_train.shape[1]*x_train.shape[2]) x = x_train[0].reshape(1, 784) """Training""" model = RBM(n_visible=28 * 28, n_hidden=200, lr=0.05) training_epochs = 2 for epoch in range(training_epochs): cost = model.const_divergence(x, K=1) print('Training epoch %d, cost is ' % epoch, cost) # end_time = time.clock() # pretraining_time = (end_time - start_time) # print ('Training took %f minutes' % (pretraining_time / 60.))