Ejemplo n.º 1
0
/**
* @brief compares two networks and returns a greater than
*        zero value if they are the same
* @param net1 The first backprop neural net object
* @param net2 The second backprop neural net object
*/
int bp_compare(bp * net1, bp * net2)
{
    int retval,i,l;

    if (net1->NoOfInputs != net2->NoOfInputs) {
        return -1;
    }
    if (net1->NoOfHiddens != net2->NoOfHiddens) {
        return -2;
    }
    if (net1->NoOfOutputs != net2->NoOfOutputs) {
        return -3;
    }
    if (net1->HiddenLayers != net2->HiddenLayers) {
        return -4;
    }
    if (net1->learningRate != net2->learningRate) {
        return -5;
    }
    if (net1->noise != net2->noise) {
        return -6;
    }
    for (l = 0; l < net1->HiddenLayers; l++) {
        for (i = 0; i < net1->NoOfHiddens; i++) {
            retval =
                bp_neuron_compare(net1->hiddens[l][i],
                                  net2->hiddens[l][i]);
            if (retval == 0) return -7;
        }
    }
    for (i = 0; i < net1->NoOfOutputs; i++) {
        retval = bp_neuron_compare(net1->outputs[i], net2->outputs[i]);
        if (retval == 0) return -8;
    }
    if (net1->itterations != net2->itterations) {
        return -9;
    }
    if (net1->BPerrorAverage != net2->BPerrorAverage) {
        return -9;
    }
    if (net1->DropoutPercent!= net2->DropoutPercent) {
        return -10;
    }
    return 1;
}
Ejemplo n.º 2
0
static void test_backprop_neuron_save_load()
{
    bp_neuron n1, n2;
    int no_of_inputs=10;
    unsigned int random_seed = 123;
    char filename[256];
    FILE * fp;

    printf("test_backprop_neuron_save_load...");

    /* create neurons */
    bp_neuron_init(&n1, no_of_inputs, &random_seed);
    bp_neuron_init(&n2, no_of_inputs, &random_seed);

    sprintf(filename,"%stemp_deep.dat",DEEPLEARN_TEMP_DIRECTORY);

    /* save the first neuron */
    fp = fopen(filename,"wb");
    assert(fp!=0);
    bp_neuron_save(fp, &n1);
    fclose(fp);

    /* load into the second neuron */
    fp = fopen(filename,"rb");
    assert(fp!=0);
    bp_neuron_load(fp, &n2);
    fclose(fp);

    /* compare the two */
    assert(bp_neuron_compare(&n1, &n2)==1);

    /* free memory */
    bp_neuron_free(&n1);
    bp_neuron_free(&n2);

    printf("Ok\n");
}
Ejemplo n.º 3
0
static void test_backprop_neuron_copy()
{
    bp_neuron n1, n2;
    int retval, no_of_inputs=10;
    unsigned int random_seed = 123;

    printf("test_backprop_neuron_copy...");

    bp_neuron_init(&n1, no_of_inputs, &random_seed);
    bp_neuron_init(&n2, no_of_inputs, &random_seed);

    bp_neuron_copy(&n1, &n2);

    retval = bp_neuron_compare(&n1, &n2);
    if (retval != 1) {
        printf("\nretval %d\n", retval);
    }
    assert(retval == 1);

    bp_neuron_free(&n1);
    bp_neuron_free(&n2);

    printf("Ok\n");
}