#epoch = 9 use_ruslan = False # load dataset X, TX = rbmutil.load_mnist(False) # load ruslan's training set mdata = scipy.io.loadmat("mnist.mat") X = gp.as_garray(mdata['fbatchdata']) # enter output directory rbmutil.enter_rbm_plot_directory("mnist", cfg.n_hid, cfg.use_pcd, cfg.n_gibbs_steps, "prob.txt", clean=False) # Build RBM rbm = RestrictedBoltzmannMachine(0, cfg.n_vis, cfg.n_hid, 0) # load Ruslan's RBM if use_ruslan: print "Loading Ruslan's ml.rbm..." mdata = scipy.io.loadmat("matlab_epoch%d.mat" % (epoch + 1)) ml.rbm.bias_vis = gp.as_garray(mdata['visbiases'][0,:]) ml.rbm.bias_hid = gp.as_garray(mdata['hidbiases'][0,:]) ml.rbm.weights = gp.as_garray(mdata['vishid']) else: rbmutil.load_parameters(rbm, "weights-%02i.npz" % epoch) # load pratition function if use_ruslan: filename = "matlab-lpf-%02d.npz" % (epoch+1) else:
rbm = RestrictedBoltzmannMachine(0, cfg.n_vis, cfg.n_hid, 0) rbmutil.load_parameters(rbm, "weights-%02i.npz" % epoch) # init AIS estimator print "Calculating base RBM biases using %d samples with %d Gibbs steps " \ "inbetween..." % (ais_base_samples, ais_base_gibbs_steps_between_samples) ais = AnnealedImportanceSampler(rbm, ais_base_samples, ais_base_chains, ais_base_gibbs_steps_between_samples) print "Saving base RBM biases to %s..." % filename np.savez_compressed(filename, base_bias_vis=gp.as_numpy_array(ais.base_bias_vis)) print "Base RBM log partition function: %f" % ais.base_log_partition_function() # check base rbm log partition function if check_base_rbm_partition_function: baserbm = RestrictedBoltzmannMachine(0, cfg.n_vis, cfg.n_hid, 0) baserbm.weights = gp.zeros(baserbm.weights.shape) baserbm.bias_hid = gp.zeros(baserbm.bias_hid.shape) baserbm.bias_vis = ais.base_bias_vis print "Base RBM log partition function using partition_func: %f" % baserbm.partition_function(20, 50).ln() # perform estimation of partition function print "Estimating partition function using %dx %d AIS runs with %d intermediate "\ "RBMs and %d Gibbs steps..." % (ais_iterations, ais_runs, len(ais_betas), ais_gibbs_steps) with open("ais_iterations.csv", 'w') as outfile: outfile.write("iterations\tlog Z\n") lpfs = [] for i in range(ais_iterations): lpf, lpf_m_3s, lpf_p_3s = ais.log_partition_function(ais_betas, ais_runs, ais_gibbs_steps)
#np.seterr(all='raise') #gp.acceptable_number_types = 'no nans or infs' # parameters epoch = 14 do_sampling = True # load dataset X, VX, TX = rbmutil.load_mnist() # enter output directory rbmutil.enter_rbm_plot_directory("mnist", cfg.n_hid, cfg.use_pcd, cfg.n_gibbs_steps, clean=False) # Build RBM rbm = RestrictedBoltzmannMachine(0, cfg.n_vis, cfg.n_hid, 0) rbmutil.load_parameters(rbm, "weights-%02i.npz" % epoch) #rbmutil.load_parameters("../../../DeepLearningTutorials/code/rbm_plots/GPU-PCD/weights.npz") #epoch = 99 # calculate statistics seen_epoch_samples = 0 pl_bit = 0 pl_sum = 0 rc_sum = 0 for x in util.draw_slices(X, cfg.batch_size, kind='sequential', samples_are='rows', stop=True): print "%d / %d \r" % (seen_epoch_samples, X.shape[0]), seen_epoch_samples += cfg.batch_size
# parameters use_ruslan = True #epoch = cfg.epochs - 1 epoch = 9 batch = 0 #X, TX = rbmutil.load_mnist(False) mdata = scipy.io.loadmat("mnist.mat") X = mdata['fbatchdata'] # enter output directory rbmutil.enter_rbm_plot_directory("mnist", cfg.n_hid, cfg.use_pcd, cfg.n_gibbs_steps, "sample.txt", clean=False) # Build RBM rbm = RestrictedBoltzmannMachine(0, cfg.n_vis, cfg.n_hid, 0) # load Ruslan's RBM if use_ruslan: print "Loading Ruslan's ml.rbm..." epoch = 99 mdata = scipy.io.loadmat("mnistvh.mat") ml.rbm.bias_vis = gp.as_garray(mdata['visbiases'][0,:]) ml.rbm.bias_hid = gp.as_garray(mdata['hidbiases'][0,:]) ml.rbm.weights = gp.as_garray(mdata['vishid']) else: rbmutil.load_parameters(rbm, "weights-%02i.npz" % epoch) # compute hidden activations v = X[batch*cfg.batch_size:(batch+1)*cfg.batch_size] hid_act = gp.as_numpy_array(rbm.p_hid_given_vis(v))
cfg.epochs = 2 # load dataset X, TX = rbmutil.load_mnist(False) # load ruslan's training set mdata = scipy.io.loadmat("mnist.mat") X = gp.as_garray(mdata['fbatchdata']) # create output directory rbmutil.enter_rbm_plot_directory("mnist", cfg.n_hid, cfg.use_pcd, cfg.n_gibbs_steps, "training_from.txt", clean=False) # Build RBM rbm = RestrictedBoltzmannMachine(cfg.batch_size, cfg.n_vis, cfg.n_hid, cfg.n_gibbs_steps) mr.seed(30) rbm.weights = 0.01 * (0.5 - mr.rand(rbm.weights.shape)) # load weights if use_ruslans_start_weights: filename = "matlab_epoch%d.mat" % (from_epoch-1 + 1) print "Loading Ruslan's start weights from %s" % filename mdata = scipy.io.loadmat(filename) ml.rbm.weights = gp.as_garray(mdata['vishid']) ml.rbm.bias_vis = gp.as_garray(mdata['visbiases']) ml.rbm.bias_hid = gp.as_garray(mdata['hidbiases']) else: print "Loading python start weights" filename = "weights-%02d.npz" % (from_epoch-1) rbmutil.load_parameters(rbm, filename)