[list(map(float, line.split(","))) for line in input]) with open('TrainDigitY.csv') as input: train_labels = np.array( [list(map(float, line.split(","))) for line in input]) train_labels = train_labels.astype(int) # load the testing data and respective labels with open('TestDigitX.csv') as input: test_values = np.array( [list(map(float, line.split(","))) for line in input]) with open('TestDigitY.csv') as input: test_labels = np.array( [list(map(float, line.split(","))) for line in input]) test_labels = test_labels.astype(int) # define the optimal parameters (holdout set - 3.22% error) h_opt = 128 r_opt = 0.35 ep_opt = 8 # TestDigitX w1, w2 = ANN.ANN_train(train_values, train_labels, h_opt, r_opt, ep_opt) predictions = ANN.ANN_test(test_values, h_opt, w1, w2) np.savetxt('TestDigitYClopton.csv.gz', predictions, fmt='%i') # TestDigitX2 with open('TestDigitX2.csv') as input: test2_values = np.array( [list(map(float, line.split(","))) for line in input]) predictions = ANN.ANN_test(test2_values, h_opt, w1, w2) np.savetxt('TestDigitY2Clopton.csv.gz', predictions, fmt='%i')
holdout_labels = np.take(train_labels,holdout_idxs,axis=0) # define ranges for the three parameters hidden = [32, 64, 128, 256] rate = [0.15, 0.2, 0.25, 0.35] epoch = [4, 6, 8] # compute errors for various combinations of hidden nodes, learning rates, and epochs err = np.zeros((len(hidden),len(rate),len(epoch))) for i,h in enumerate(hidden): print(h) for j,r in enumerate(rate): print(r) for k,ep in enumerate(epoch): print(ep) w1,w2 = ANN.ANN_train(train_subset,labels_subset,h,r,ep) # test on holdout set predictions = ANN.ANN_test(holdout_set,h,w1,w2) err[i,j,k] = (1/float(holdout_size))*np.sum([predictions[a] != holdout_labels[a,0] for a in range(holdout_size)]) # find combination of parameters with lowest error min_val = 1 min_hidden = 0 min_rate = 0 min_epoch = 0 for i in range(len(hidden)): val = np.amin(err[i,:,:]) if val < min_val: min_val = val print(min_val) (j,k) = np.unravel_index(err[i,:,:].argmin(),err[i,:,:].shape)