当前位置: 代码迷 >> 综合 >> 单输出感知器学习算法实现修改
  详细解决方案

单输出感知器学习算法实现修改

热度:32   发布时间:2024-01-22 02:30:58.0

今天看了一些文章,发现前面我对整个神经网络学习算法都存在误解.所以更正了一下.现在好了.这个实现方法应该是正确的了.

#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算法,把这个任务完成以后,我的任务也差不多完成一半了.

  相关解决方案