⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 load_neuron_array.c

📁 一个不错的GA-NN的神经网络模型的示范代码。适合入门学习
💻 C
字号:
/*  load_neuron_array.c *//* 	Copyright 2004 Oswaldo Morizaki *//* 	This file is part of ga-nn-ag.    ga-nn-ag is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    ga-nn-ag is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with ga-nn-ag; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#include "my_header.h"#include "aux_prot.h"int load_neuron_array(int num_neuron, struct neuron ** neuron_array,	const char * filename){	int k,l,m,n,o,p;	double temp[4];	FILE * file_pointer;	char char_temp[BUFFSIZE];	if( (file_pointer=fopen(filename,"r")) == NULL )	{		return(-1);	}	while(!feof(file_pointer))	{		fgets(char_buffer,BUFFSIZE,file_pointer);		if(!strncmp(char_buffer,"neuron_array",12))		{			fgets(char_buffer,BUFFSIZE,file_pointer);					//num_neuron			for (k=0; k< num_neuron;k ++)			{				fgets(char_buffer,BUFFSIZE,file_pointer);				//neuron number								fgets(char_buffer,BUFFSIZE,file_pointer);				neuron_array[k]->alpha=atof(char_buffer+6);		 	//alpha				fgets(char_buffer,BUFFSIZE,file_pointer);				neuron_array[k]->conv_rate=atof(char_buffer+10);		//conv_rate				fgets(char_buffer,BUFFSIZE,file_pointer);				neuron_array[k]->bias_corr=atoi(char_buffer+10);		//bias_correction				fgets(char_buffer,BUFFSIZE,file_pointer);				neuron_array[k]->delta_type=atoi(char_buffer+11);	//delta_type				fgets(char_buffer,BUFFSIZE,file_pointer);				neuron_array[k]->momentum=atoi(char_buffer+9);		//momentum								fgets(char_buffer,BUFFSIZE,file_pointer); 				neuron_array[k]->x_c=atof(char_buffer+4);				//x_c				fgets(char_buffer,BUFFSIZE,file_pointer);				neuron_array[k]->y_c=atof(char_buffer+4);				//y_c				fgets(char_buffer,BUFFSIZE,file_pointer);				neuron_array[k]->range=atof(char_buffer+6);			//range				fgets(char_buffer,BUFFSIZE,file_pointer);				l=atoi(char_buffer+8); 				neuron_array[k]->num_con=l;								//num_con				if (l)				{					if ( !(neuron_array[k]->con_x = (float *)calloc(l,sizeof(float)) ))					{						syslog(LOG_CRIT,"Error calloc neuron_array[%d]->con_x\n",k);						return(-1);					}					if ( !(neuron_array[k]->con_y = (float *)calloc(l,sizeof(float)) ))					{						syslog(LOG_CRIT,"Error calloc neuron_array[%d]->con_y\n",k);						return(-1);					}					if( !(neuron_array[k]->con_w = (double *)calloc(l,sizeof(double)) ))					{						syslog(LOG_CRIT,"Error calloc neuron_array[%d]->con_w\n",k);						return(-1);					}					if( !(neuron_array[k]->age = (int *)calloc(l,sizeof(int)) ))					{						syslog(LOG_CRIT,"Error calloc neuron_array[%d]->age\n",k);						return(-1);					}										if (neuron_array[k]->momentum == 1)					{						if ( !(neuron_array[k]->delta_con_w = (double *)calloc(l,sizeof(double)) ))						{							syslog(LOG_CRIT,"Error calloc neuron_array[%d]->delta_con_w\n",k);							return(-1);						}					}				}				else						{					neuron_array[k]->con_x = NULL;					neuron_array[k]->con_y = NULL;					neuron_array[k]->con_w = NULL;					neuron_array[k]->age = NULL;					neuron_array[k]->delta_con_w = NULL;				}								fgets(char_buffer,BUFFSIZE,file_pointer);				neuron_array[k]->bias=atof(char_buffer+5);			//bias								for (m=0; m<l; m++)				{					fgets(char_buffer,BUFFSIZE,file_pointer);//					syslog(LOG_INFO,char_buffer);					o=0;					p=0;					for (n=0;n<BUFFSIZE;n++)					{						char_temp[n-o]=char_buffer[n];						if ( (char_buffer[n] == ':') || (char_buffer[n] == '\n' ) 							|| feof(file_pointer) )						{							char_temp[n-o]='\0';							o=n+1;							temp[p]=atof(char_temp);//							syslog(LOG_INFO,"char_temp=%s",char_temp);							p++;														if ((char_buffer[n] == '\n') || feof(file_pointer))							{								break;							}						}					}										*(neuron_array[k]->con_x+m)=temp[0];					*(neuron_array[k]->con_y+m)=temp[1];					*(neuron_array[k]->con_w+m)=temp[2];					*(neuron_array[k]->age + m)=(int)temp[3];//					syslog(LOG_INFO,"%1.15f:%1.15f:%3.9f:%d\n",*(neuron_array[k]->con_x+m)//										,*(neuron_array[k]->con_y+m),*(neuron_array[k]->con_w+m),*(neuron_array[k]->age+m));				}				fgets(char_buffer,BUFFSIZE,file_pointer); //empty line			}		}	}	fclose(file_pointer);	return(1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -