Exemple #1
0
int main() {
    NeuralNet nn = NeuralNet(2,2,1);
    double ***xor_pat = new double **[4];
    for(int i = 0; i < 4; i++) {
        xor_pat[i] = new double*[2];
        xor_pat[i][0] = new double[2];
        xor_pat[i][0] = new double[1];
    }
    xor_pat[0][0][0] = 0; xor_pat[0][0][1] = 0; xor_pat[0][1][0] = 0;
    xor_pat[1][0][0] = 0; xor_pat[1][0][1] = 1; xor_pat[0][1][0] = 1;
    xor_pat[2][0][0] = 1; xor_pat[2][0][1] = 0; xor_pat[0][1][0] = 1;
    xor_pat[3][0][0] = 1; xor_pat[3][0][1] = 1; xor_pat[0][1][0] = 0;
    nn.train(xor_pat, 1000, 0.5, 0.2, 4);
    nn.print_test(xor_pat, 4);
    return 0;
}
Exemple #2
0
int main(int argc, char * const argv[]) {
    using namespace std;

    srand((unsigned)time(0));
    cout.precision(2);
    cout.setf(ios::fixed | ios::showpoint);

    DataSet *train = new DataSet(IDX_DIR + TRAINING_IMAGES, IDX_DIR + TRAINING_LABELS, OUTPUT_ENC);
    DataSet *test = new DataSet(IDX_DIR + TESTING_IMAGES, IDX_DIR + TESTING_LABELS, OUTPUT_ENC);
    NeuralNet *nn = new NeuralNet(train->image_vector_length(), NUM_HIDDEN_NODES, train->label_vector_length());

    int train_len = train->length();
    cout << "Training on " << train_len << " examples" << endl;
    ticks train_start = getticks();
    for(int i=0; i < train_len; i++) {
        nn->train(train->image_vector(i), train->label_vector(i), ETA);
    }
    ticks train_end = getticks();

    int test_len = test->length();
    cout << "Testing on " << test_len << " examples" << endl;
    ticks test_start = getticks();
    int correct = 0;
    for(int i=0; i < test_len; i++) {
        int guess = test->label_for_vector(nn->run(test->image_vector(i)));
        int answer = test->label(i);
        if(guess == answer) {
            correct ++;
        }
    }
    ticks test_end = getticks();

    cout << "Correct: " << correct << "/" << test_len << " (" << 100 * double(correct)/test_len << "%)" << endl;
    cout << "Training: " << elapsed(train_end, train_start) << endl;
    cout << "Testing: " << elapsed(test_end, test_start) << endl;

    delete nn;
    delete train;
    delete test;

    return 0;
}