fann_options.c
来自「一个功能强大的神经网络分析程序」· C语言 代码 · 共 476 行 · 第 1/2 页
C
476 行
return ann->quickprop_decay;} /* Mu is a factor used to increase and decrease the stepsize (default 1.75). */FANN_EXTERNAL float FANN_API fann_get_quickprop_mu(struct fann *ann){ return ann->quickprop_mu;}/* Tells how much the stepsize should increase during learning (default 1.2). */FANN_EXTERNAL float FANN_API fann_get_rprop_increase_factor(struct fann *ann){ return ann->rprop_increase_factor;}/* Tells how much the stepsize should decrease during learning (default 0.5). */FANN_EXTERNAL float FANN_API fann_get_rprop_decrease_factor(struct fann *ann){ return ann->rprop_decrease_factor;}/* The minimum stepsize (default 0.0). */FANN_EXTERNAL float FANN_API fann_get_rprop_delta_min(struct fann *ann){ return ann->rprop_delta_min;}/* The maximum stepsize (default 50.0). */FANN_EXTERNAL float FANN_API fann_get_rprop_delta_max(struct fann *ann){ return ann->rprop_delta_max;}#ifdef FIXEDFANN/* returns the position of the fix point. */FANN_EXTERNAL unsigned int FANN_API fann_get_decimal_point(struct fann *ann){ return ann->decimal_point;}/* returns the multiplier that fix point data is multiplied with. */FANN_EXTERNAL unsigned int FANN_API fann_get_multiplier(struct fann *ann){ return ann->multiplier;}#endif/* INTERNAL FUNCTION Adjust the steepwise functions (if used)*/void fann_update_stepwise_hidden(struct fann *ann){ unsigned int i = 0;#ifndef FIXEDFANN /* For use in stepwise linear activation function. results 0.005, 0.05, 0.25, 0.75, 0.95, 0.995 */ switch(ann->activation_function_hidden){ case FANN_SIGMOID: case FANN_SIGMOID_STEPWISE: ann->activation_results_hidden[0] = (fann_type)0.005; ann->activation_results_hidden[1] = (fann_type)0.05; ann->activation_results_hidden[2] = (fann_type)0.25; ann->activation_results_hidden[3] = (fann_type)0.75; ann->activation_results_hidden[4] = (fann_type)0.95; ann->activation_results_hidden[5] = (fann_type)0.995; break; case FANN_SIGMOID_SYMMETRIC: case FANN_SIGMOID_SYMMETRIC_STEPWISE: ann->activation_results_hidden[0] = (fann_type)-0.99; ann->activation_results_hidden[1] = (fann_type)-0.9; ann->activation_results_hidden[2] = (fann_type)-0.5; ann->activation_results_hidden[3] = (fann_type)0.5; ann->activation_results_hidden[4] = (fann_type)0.9; ann->activation_results_hidden[5] = (fann_type)0.99; break; default: /* the actiavation functions which do not have a stepwise function should not have it calculated */ return; }#else /* Calculate the parameters for the stepwise linear sigmoid function fixed point. Using a rewritten sigmoid function. results 0.005, 0.05, 0.25, 0.75, 0.95, 0.995 */ switch(ann->activation_function_hidden){ case FANN_SIGMOID: case FANN_SIGMOID_STEPWISE: ann->activation_results_hidden[0] = (fann_type)(ann->multiplier/200.0+0.5); ann->activation_results_hidden[1] = (fann_type)(ann->multiplier/20.0+0.5); ann->activation_results_hidden[2] = (fann_type)(ann->multiplier/4.0+0.5); ann->activation_results_hidden[3] = ann->multiplier - (fann_type)(ann->multiplier/4.0+0.5); ann->activation_results_hidden[4] = ann->multiplier - (fann_type)(ann->multiplier/20.0+0.5); ann->activation_results_hidden[5] = ann->multiplier - (fann_type)(ann->multiplier/200.0+0.5); break; case FANN_SIGMOID_SYMMETRIC: case FANN_SIGMOID_SYMMETRIC_STEPWISE: ann->activation_results_hidden[0] = (fann_type)((ann->multiplier/100.0) - ann->multiplier + 0.5); ann->activation_results_hidden[1] = (fann_type)((ann->multiplier/10.0) - ann->multiplier + 0.5); ann->activation_results_hidden[2] = (fann_type)((ann->multiplier/2.0) - ann->multiplier + 0.5); ann->activation_results_hidden[3] = ann->multiplier - (fann_type)(ann->multiplier/2.0+0.5); ann->activation_results_hidden[4] = ann->multiplier - (fann_type)(ann->multiplier/10.0+0.5); ann->activation_results_hidden[5] = ann->multiplier - (fann_type)(ann->multiplier/100.0+0.5); break; default: /* the actiavation functions which do not have a stepwise function should not have it calculated */ return; } #endif for(i = 0; i < 6; i++){#ifndef FIXEDFANN switch(ann->activation_function_hidden){ case FANN_SIGMOID: break; case FANN_SIGMOID_STEPWISE: ann->activation_values_hidden[i] = (fann_type)((log(1.0/ann->activation_results_hidden[i] -1.0) * 1.0/-2.0) * 1.0/ann->activation_steepness_hidden); break; case FANN_SIGMOID_SYMMETRIC: case FANN_SIGMOID_SYMMETRIC_STEPWISE: ann->activation_values_hidden[i] = (fann_type)((log((1.0-ann->activation_results_hidden[i]) / (ann->activation_results_hidden[i]+1.0)) * 1.0/-2.0) * 1.0/ann->activation_steepness_hidden); break; }#else switch(ann->activation_function_hidden){ case FANN_SIGMOID: case FANN_SIGMOID_STEPWISE: ann->activation_values_hidden[i] = (fann_type)((((log(ann->multiplier/(float)ann->activation_results_hidden[i] -1)*(float)ann->multiplier) / -2.0)*(float)ann->multiplier) / ann->activation_steepness_hidden); break; case FANN_SIGMOID_SYMMETRIC: case FANN_SIGMOID_SYMMETRIC_STEPWISE: ann->activation_values_hidden[i] = (fann_type)((((log((ann->multiplier - (float)ann->activation_results_hidden[i])/((float)ann->activation_results_hidden[i] + ann->multiplier))*(float)ann->multiplier) / -2.0)*(float)ann->multiplier) / ann->activation_steepness_hidden); break; }#endif }}/* INTERNAL FUNCTION Adjust the steepwise functions (if used)*/void fann_update_stepwise_output(struct fann *ann){ unsigned int i = 0;#ifndef FIXEDFANN /* For use in stepwise linear activation function. results 0.005, 0.05, 0.25, 0.75, 0.95, 0.995 */ switch(ann->activation_function_output){ case FANN_SIGMOID: case FANN_SIGMOID_STEPWISE: ann->activation_results_output[0] = (fann_type)0.005; ann->activation_results_output[1] = (fann_type)0.05; ann->activation_results_output[2] = (fann_type)0.25; ann->activation_results_output[3] = (fann_type)0.75; ann->activation_results_output[4] = (fann_type)0.95; ann->activation_results_output[5] = (fann_type)0.995; break; case FANN_SIGMOID_SYMMETRIC: case FANN_SIGMOID_SYMMETRIC_STEPWISE: ann->activation_results_output[0] = (fann_type)-0.99; ann->activation_results_output[1] = (fann_type)-0.9; ann->activation_results_output[2] = (fann_type)-0.5; ann->activation_results_output[3] = (fann_type)0.5; ann->activation_results_output[4] = (fann_type)0.9; ann->activation_results_output[5] = (fann_type)0.99; break; default: /* the actiavation functions which do not have a stepwise function should not have it calculated */ return; }#else /* Calculate the parameters for the stepwise linear sigmoid function fixed point. Using a rewritten sigmoid function. results 0.005, 0.05, 0.25, 0.75, 0.95, 0.995 */ switch(ann->activation_function_output){ case FANN_SIGMOID: case FANN_SIGMOID_STEPWISE: ann->activation_results_output[0] = (fann_type)(ann->multiplier/200.0+0.5); ann->activation_results_output[1] = (fann_type)(ann->multiplier/20.0+0.5); ann->activation_results_output[2] = (fann_type)(ann->multiplier/4.0+0.5); ann->activation_results_output[3] = ann->multiplier - (fann_type)(ann->multiplier/4.0+0.5); ann->activation_results_output[4] = ann->multiplier - (fann_type)(ann->multiplier/20.0+0.5); ann->activation_results_output[5] = ann->multiplier - (fann_type)(ann->multiplier/200.0+0.5); break; case FANN_SIGMOID_SYMMETRIC: case FANN_SIGMOID_SYMMETRIC_STEPWISE: ann->activation_results_output[0] = (fann_type)((ann->multiplier/100.0) - ann->multiplier + 0.5); ann->activation_results_output[1] = (fann_type)((ann->multiplier/10.0) - ann->multiplier + 0.5); ann->activation_results_output[2] = (fann_type)((ann->multiplier/2.0) - ann->multiplier + 0.5); ann->activation_results_output[3] = ann->multiplier - (fann_type)(ann->multiplier/2.0+0.5); ann->activation_results_output[4] = ann->multiplier - (fann_type)(ann->multiplier/10.0+0.5); ann->activation_results_output[5] = ann->multiplier - (fann_type)(ann->multiplier/100.0+0.5); break; default: /* the actiavation functions which do not have a stepwise function should not have it calculated */ return; } #endif for(i = 0; i < 6; i++){#ifndef FIXEDFANN switch(ann->activation_function_output){ case FANN_SIGMOID: break; case FANN_SIGMOID_STEPWISE: ann->activation_values_output[i] = (fann_type)((log(1.0/ann->activation_results_output[i] -1.0) * 1.0/-2.0) * 1.0/ann->activation_steepness_output); break; case FANN_SIGMOID_SYMMETRIC: case FANN_SIGMOID_SYMMETRIC_STEPWISE: ann->activation_values_output[i] = (fann_type)((log((1.0-ann->activation_results_output[i]) / (ann->activation_results_output[i]+1.0)) * 1.0/-2.0) * 1.0/ann->activation_steepness_output); break; }#else switch(ann->activation_function_output){ case FANN_SIGMOID: case FANN_SIGMOID_STEPWISE: ann->activation_values_output[i] = (fann_type)((((log(ann->multiplier/(float)ann->activation_results_output[i] -1)*(float)ann->multiplier) / -2.0)*(float)ann->multiplier) / ann->activation_steepness_output); break; case FANN_SIGMOID_SYMMETRIC: case FANN_SIGMOID_SYMMETRIC_STEPWISE: ann->activation_values_output[i] = (fann_type)((((log((ann->multiplier - (float)ann->activation_results_output[i])/((float)ann->activation_results_output[i] + ann->multiplier))*(float)ann->multiplier) / -2.0)*(float)ann->multiplier) / ann->activation_steepness_output); break; }#endif }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?