def run_nnet(train_data, test_data, param): net = NeuralNet(len(test_data[0].rgbs_merged), param) train_data_ = [ (img.rgbs_merged, img.orientation) for img in train_data ] print "Neural net: Training..." net.train(train_data_, 5) classified_0 = [] classified_90 = [] classified_180 = [] classified_270 = [] print "Neural net: Classification..." for test in test_data: ret = int(round(net.output(test.rgbs_merged))) ret_df = [(abs(0 - ret), 0), (abs(90 - ret), 90), (abs(180 - ret), 180), (abs(270 - ret), 270)] ret = min(ret_df, key=lambda (x, _): x)[1] ret_str = "(" + str(ret == test.orientation) + ")" print test.name, "classified as", ret, ret_str if ret == 0: classified_0.append(test) elif ret == 90: classified_90.append(test) elif ret == 180: classified_180.append(test) elif ret == 270: classified_270.append(test) else: raise RuntimeError("Bug: nnet returned %s" % str(ret)) f = open("nnet_output.txt", "w") print_confusion_matrix(f, classified_0, classified_90, classified_180, classified_270) f.close()