Example #1
0
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()