print("\nStarting a Deep Belief Net..") dbn = DeepBeliefNet(sizes={ "vis": image_size[0] * image_size[1], "hid": 500, "pen": 500, "top": 2000, "lbl": 10 }, image_size=image_size, n_labels=10, batch_size=100) ''' greedy layer-wise training ''' dbn.train_greedylayerwise(vis_trainset=train_imgs, lbl_trainset=train_lbls, n_iterations=20, verbose=True) # print("Classify training set") # dbn.recognize(train_imgs, train_lbls) # # print("Classify test set") # dbn.recognize(test_imgs, test_lbls) print("Image generation") for digit in range(10): digit_1hot = np.zeros(shape=(1, 10)) digit_1hot[0, digit] = 1 dbn.generate(digit_1hot, name="rbm") ''' fine-tune wake-sleep training '''
dbn = DeepBeliefNet( sizes={ "vis": image_size[0] * image_size[1], "hid": 500, "pen": 500, "top": 2000, "lbl": 10, }, image_size=image_size, n_labels=10, batch_size=20, ) dbn.train_greedylayerwise( vis_trainset=train_imgs, lbl_trainset=train_lbls, n_iterations=10 ) rbm0 = dbn.rbm_stack["vis--hid"] rbm1 = dbn.rbm_stack["hid--pen"] rbm2 = dbn.rbm_stack["pen+lbl--top"] image0 = train_imgs[:1,:] lbl0 = train_lbls[:1,:] lblany = np.ones(lbl0.shape) / 10 last = np.zeros((1,500)) losses = [] for i in range(500): p_0, s_0 = rbm0.get_h_given_v_dir(p_v)
print("\nStarting a Deep Belief Net..") dbn = DeepBeliefNet(sizes={ "vis": image_size[0] * image_size[1], "hid": 500, "pen": 500, "top": 2000, "lbl": 10 }, image_size=image_size, n_labels=10, batch_size=20) ''' greedy layer-wise training ''' aux = dbn.train_greedylayerwise(vis_trainset=train_imgs, lbl_trainset=train_lbls, n_iterations=ITERATIONS) # plt.plot(range(10, 21), averages[-1], label="Original RBM") # plt.plot(range(10, 21), aux, label="Greedy RBM") # plt.xticks(range(10, 21)) # plt.xlabel("Epoch") # plt.ylabel("Average Loss rate") # plt.legend() # plt.show() dbn.recognize(train_imgs, train_lbls) dbn.recognize(test_imgs, test_lbls) # # for digit in range(10): # digit_1hot = np.zeros(shape=(1, 10))