Esempio n. 1
0
/**
* @brief Save a neural network to file
* @brief fp File pointer
* @param net Backprop neural net object
*/
int bp_save(FILE * fp, bp * net)
{
    int retval,i,l;

    retval = fwrite(&net->itterations, sizeof(unsigned int), 1, fp);
    retval = fwrite(&net->NoOfInputs, sizeof(int), 1, fp);
    retval = fwrite(&net->NoOfHiddens, sizeof(int), 1, fp);
    retval = fwrite(&net->NoOfOutputs, sizeof(int), 1, fp);
    retval = fwrite(&net->HiddenLayers, sizeof(int), 1, fp);
    retval = fwrite(&net->learningRate, sizeof(float), 1, fp);
    retval = fwrite(&net->noise, sizeof(float), 1, fp);
    retval = fwrite(&net->BPerrorAverage, sizeof(float), 1, fp);
    retval = fwrite(&net->DropoutPercent, sizeof(float), 1, fp);

    for (l = 0; l < net->HiddenLayers; l++) {
        for (i = 0; i < net->NoOfHiddens; i++) {
            bp_neuron_save(fp,net->hiddens[l][i]);
        }
    }
    for (i = 0; i < net->NoOfOutputs; i++) {
        bp_neuron_save(fp,net->outputs[i]);
    }

    return retval;
}
Esempio 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");
}