?? gzqsf.txt
字號:
連續多輸出感知器訓練算法的實現
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int ji(int x[10],int w[][10],int k1,int k2,int net[10])
{
int i,j;
memset(net,0,10);
for(j=0;j<k2;j++)
for(i=0;i<k1;i++)
net[j]=net[j]+x[i]*w[i][j];
return 0;
}
int F(int net)
{
int o;
o=1/(1+exp(-net));
return o;
}
int suiji()
{
float i,j;
int s;
i=(float)RAND_MAX;
j=(float)rand();
s=(int)10*j/i;
return s;
}
void init(int w[][10],int k1,int k2)
{
int i,j;
srand((int)time(0));
for(i=0;i<k1;i++)
{
for(j=0;j<k2;j++)
w[i][j]=suiji();
}
for(i=0;i<k1;i++)
{
for(j=0;j<k2;j++)
{
printf("%d ",w[i][j]);
}
printf("\n");
}
printf("\n");
}
void main()
{
int x[10]={2,6,0,5,0,1,6,0,1,0};
int y[10]={4,7,6,8,5,4,3,2,1,5};
int w[10][10],i,j;
int o[10],net[10],e,a,d;
init(w,10,10);
e=1;
a=0.8;
d=e+1;
while(d>=3)
{
d=0;
ji(x,w,10,10,net);
for(i=0;i<10;i++)
{
o[i]=F(net[i]);
}
for(i=0;i<10;i++)
for(j=0;j<10;j++)
w[i][j]=w[i][j]+a*(y[j]-o[j])*x[i];
for(j=0;j<10;j++)
d=d+(y[j]-o[j])*(y[j]-o[j]);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -