📄 main.cpp
字号:
#include "backprop.h"
#include <fstream.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
void main()
{
int i,j,count;
float eo, max_eo;
float eh;
//动态分配内存
float **ina;
ina=(float **)malloc(DIMENSION_NUM*sizeof(float*));
for(i=0;i<DIMENSION_NUM;i++)
ina[i]=(float *)malloc((M+1)*sizeof(float *));
float in[DIMENSION_NUM][M]={0,0,0,1,1,0,1,1};
for(i=0;i<DIMENSION_NUM;i++)
for(j=0;j<M;j++)
ina[i][j+1]=in[i][j];
//动态分配内存
float **outa;
outa=(float **)malloc(DIMENSION_NUM*sizeof(float*));
for(i=0;i<DIMENSION_NUM;i++)
outa[i]=(float *)malloc((N+1)*sizeof(float *));
float out[DIMENSION_NUM][N]={0,1,1,0};
for(i=0;i<DIMENSION_NUM;i++)
for(j=0;j<N;j++)
outa[i][j+1]=out[i][j];
BPNN *net;
bpnn_initialize(time(NULL));
net = bpnn_create(M,K,N);
printf("\n");
printf("输入层节点数为:%d\n",M);
printf("输出层节点数为:%d\n",N);
printf("隐含层节点数为:%d\n",K);
printf("\n");
count = 0;
do
{
max_eo=0;
for(i=0; i<DIMENSION_NUM; i++)
{
net->input_units = ina[i];
net->target = outa[i];
bpnn_train(net, (float)P, (float)Q, &eo, &eh);
if(eo>max_eo)
max_eo = eo;
}
count++;
if(!(count%10000))
printf("已经训练了:%d万次\n",count/10000);
if(count>100000)
{
count = 0;
net = bpnn_create(M,K,N);
printf("\n");
printf("创建一个新的神经网络:\n");
}
} while(eo > 0.001);
for(i=0; i<DIMENSION_NUM; i++)
{
net->input_units = ina[i];
net->target = outa[i];
bpnn_feedforward(net);
printf("out[%d]:%f\n",i,net->output_units[1]);
}
printf("总训练次数:%d\n",count);
for(i=0;i<DIMENSION_NUM;i++)
free((char*)ina[i]);
free((char*)ina);
for(i=0;i<DIMENSION_NUM;i++)
free((char*)outa[i]);
free((char*)outa);
net->input_units = NULL;
net->target = NULL;
bpnn_free(net);
return ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -