/* ------------------------------------ */ void test_gaussian_noise_computation(void) /* ------------------------------------ */ { int i; int n = 10000; float32 x, sx, sxx; sx = 0.0f; sxx = 0.0f; for(i=0; i<n; i++) { x = gaussian_noise(0, 10); //printf("%10.4f\n", x); sx += x; sxx += x*x; } printf("average = %10.4f sigma = %10.4f\n", sx/n, calc_sigma(n, sx, sxx)); sx = 0.0f; sxx = 0.0f; for(i=0; i<n; i++) { x = gaussian_noise(0, 20); //printf("%10.4f\n", x); sx += x; sxx += x*x; } printf("average = %10.4f sigma = %10.4f\n", sx/n, calc_sigma(n, sx, sxx)); }
// --------------------------------------- void test_gaussian_noise_computation(void) // --------------------------------------- { // pour valider que le generateur aleatoire a bien // les bons parametres statistiques ... int i; int n = 1000000; float32 x, sx, sxx; puts("-------------------------------------"); puts("-- test_gaussian_noise_computation --"); puts("-------------------------------------"); sx = 0.0f; sxx = 0.0f; for(i = 0; i < n; i++) { x = gaussian_noise(0, 10); //printf("%10.4f\n", x); sx += x; sxx += x*x; } printf("average = %10.3f sigma = %10.3f\n", sx/n, calc_sigma(n, sx, sxx)); sx = 0.0f; sxx = 0.0f; for(i = 0; i < n; i++) { x = gaussian_noise(0, 20); //printf("%10.4f\n", x); sx += x; sxx += x*x; } printf("average = %10.3f sigma = %10.3f\n", sx/n, calc_sigma(n, sx, sxx)); }
void back_propagation(){ int i,j,k; for(i = LAYER_SIZE - 2; i > 0; i--){ for(j = 0; j < UNIT_SIZE; j++){ unit[i][j].sigma = calc_sigma(unit[i][j], j); } } for(i = 1; i < LAYER_SIZE; i++){ for(j = 0; j < UNIT_SIZE; j++){ for(k = 0; k < UNIT_SIZE; k++){ double diff = unit[i][j].sigma * unit[i][j].input_unit[k].value; unit[i][j].input_weight[k] = unit[i][j].input_weight[k] - LEARNING_PARAM * diff; } } } }