def main(): x_train, y_train, x_test, y_test = data.mnist(one_hot=True) # Define Deep Neural Network structure (input_dim, num_of_nodes) layers = [[x_train.shape[1], 256], [256, 128], [128, 64]] # Initialize a deep neural network dnn = DNN(MODEL_FOLDER, os_slash, layers, params) pre_epochs = 100 train_epochs = 100 # Create auto-encoders and train them one by one by stacking them in the DNN pre_trained_weights = dnn.pre_train(x_train, pre_epochs) # Then use the pre-trained weights of these layers as initial weight values for the MLP history = dnn.train(x_train, y_train, train_epochs, init_weights=pre_trained_weights) plot.plot_loss(history, loss_type='MSE') predicted, score = dnn.test(x_test, y_test) print("Test accuracy: ", score[1]) dnn.model.save_weights(MODEL_FOLDER + os_slash + "final_weights.h5") dnn.model.save(MODEL_FOLDER + os_slash + "model.h5") save_results(score[1])
def main2(): dnn = DNN(input=28 * 28, layers=[DropoutLayer(160, LQ), Layer(10, LCE)], eta=0.05, lmbda=1) # 98% dnn.initialize_rand() train, test, vadilation = load_mnist_simple() f_names = [f'mnist_expaned_k0{i}.pkl.gz' for i in range(50)] shuffle(f_names) for f_name in f_names: print(f_name) with timing("load"): raw_data = load_data(f_name) with timing("shuffle"): shuffle(raw_data) with timing("reshape"): data = [(x.reshape((784, 1)), y) for x, y in islice(raw_data, 100000)] del raw_data with timing("learn"): dnn.learn(data) del data print('TEST:', dnn.test(test))
def main(): train, test, vadilation = load_mnist_simple() # x, y = train[0] # print("x: ", x.shape) # print("y: ", y) with timing(f""): # dnn = DNN(input=28 * 28, layers=[Layer(30, LQ), Layer(10, LCE)], eta=0.05) # 96% # dnn = DNN(input=28 * 28, layers=[Layer(30, LQ), Layer(10, SM)], eta=0.001) # 68% # dnn = DNN(input=28 * 28, layers=[Layer(100, LQ), Layer(10, LCE)], eta=0.05, lmbda=5) # 98% # dnn = DNN(input=28 * 28, layers=[DropoutLayer(100, LQ), Layer(10, LCE)], eta=0.05) # 97.5% dnn = DNN(input=28 * 28, layers=[DropoutLayer(160, LQ), Layer(10, LCE)], eta=0.05, lmbda=3) dnn.initialize_rand() dnn.learn(train, epochs=30, test=vadilation, batch_size=29) print('test:', dnn.test(test)) print(dnn.stats())