예제 #1
0
파일: mnist_ais.py 프로젝트: surban/ml
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)
        lpfs.append(lpf)
        print "%3d: ln Z = %3.6f; ln(Z-3s) = %3.6f; ln(Z+3s) = %3.6f" \
            % (i, lpf, lpf_m_3s, lpf_p_3s)
        outfile.write("%d\t%f\n" % (i, lpf))

lpf_mean = np.mean(lpfs)
lpf_std = np.std(lpfs)
print
print "mean: ln Z = %f +/- %f" % (lpf_mean, lpf_std)

np.savez_compressed("lpf-%02d.npz" % epoch, lpf=lpf_mean, lpf_std=lpf_std)