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 + -
显示快捷键?