Exemplo n.º 1
0
int main() {
    size_t i, j;
    size_t nencode = 3, ninput = pow(2, nencode);  //Set the number of vectors
    size_t iter_times = 50000; // Complex network requires more iteration times
    double rate = 0.5, momentum = 0.5; // Learning parameters;
    size_t hidden[1] = { nencode };
    char *ch = "sigmoid";
    char *chs[1] = {ch};

    double **input = alloc_2d(ninput, ninput), **output = alloc_2d(ninput, ninput);
    for (i = 0; i < ninput; ++i) {
        for (j = 0; j < ninput; ++j) {
            if (i == j)
                input[i][j] = output[i][j] = 1;
            else
                input[i][j] = output[i][j] = 0;
        }
    }

    /* Set the configuration of neural network */
    struct nn_config config = {
        .dim_h = hidden,
        .ahfunc = chs,
        .n_hidden = 1,
        .dim_i = ninput,
        .dim_o = ninput,
        .aofunc = ch
    };

    struct neural_network* nn = create_nn(&config);
    train(nn, input, output, ninput, rate, momentum, iter_times);
    
    double *res = alloc_1d(ninput);

    for (i = 0; i < ninput; ++i) {
        for (j = 0; j < ninput; ++j)
            printf("%d ", (int)input[i][j]);
        printf("=> ");
        predict_hidden(nn, input[i], res, 0);
        for (j = 0; j < nencode; ++j) {
            printf("%.3f ", res[j]);    // Actually value
//          printf("%d ", (int)(res[j]+0.5)); // 0-1 value
        }
      predict(nn, input[i], res);
      printf("=> ");
      for (j = 0; j < ninput; ++j)
          printf("%.3f ", res[j]);
        printf("\n");
    }
    free_2d(input, ninput);
    free_2d(output, ninput);
    free_1d(res);
    destroy_nn(nn);
    return 0;
}
Exemplo n.º 2
0
	mlp_all_inputs_spaceship_controller::mlp_all_inputs_spaceship_controller(size_t num_layers, size_t per_hidden, size_t num_outputs):
		mlp_spaceship_controller(num_layers, per_hidden, num_outputs)
	{
		create_nn(NumNNInputs);
	}