今天看了一些文章,发现前面我对整个神经网络学习算法都存在误解.所以更正了一下.现在好了.这个实现方法应该是正确的了.
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int ji(int x[10],int w[10],int k)
{
int i,net=0;
for(i=0;i<k;i++)
net=net+x[i]*w[i];
return net;
}
int F(int net)
{
if (net>12)
return 1;
else
return 0;
}
void jia(int x[],int w[],int k)
{
int i=0;
for (i=0;i<k;i++)
w[i]=w[i]+x[i];
}
void jian(int x[],int w[],int k)
{
int i=0;
for(i=0;i<k;i++)
w[i]=w[i]-x[i];
}
int suiji()
{
float i,j;
float s;
i=(float)RAND_MAX;
j=(float)rand();
s=j/i;
if(s>0.5)
return 1;
else
return 0;
}
void init(int w[],int k)
{
int i;
srand((int)time(0));
for(i=0;i<k;i++)
{
w[i]=suiji();
}
for(i=0;i<k;i++)
printf("%d ",w[i]);
printf("/n");
}
void main()
{
int x[10]={1,0,0,0,0,1,1,0,1,0};
int temp=1;
int w[10];
int o;
init(w,10);
o=F(ji(x,w,10));
while (o!=temp)
{
printf("%d/n",o);
jia(x,w,10);
o=F(ji(x,w,10));
}
printf("%d/n",o);
}
下一步实现BP算法,把这个任务完成以后,我的任务也差不多完成一半了.