?? ann1.cpp
字號:
#include"iostream.h"
#include "math.h"
#include <stdlib.h>
#include <time.h>
#include <fstream.h>
#define M 3
#define node 4
void initw(float weight[M][node][node])
{
int i,j;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
weight[1][i][j]=(float)(rand()%200-100)/100;
for(i=0;i<4;i++)
weight[2][i][0]=(float)(rand()%200-100)/100;
}
float sum(float weight[node][node],float y[node],int nodebh,int nodenum)
{
float result=0;
int i=0;
for(i=0;i<nodenum;i++)
result+=weight[i][nodebh]*y[i];
return result;
}
float F(float var)
{
float result=0;
result=(float)(1+exp(0-var));
result=1/result;
return result;
}
float Fd(float var)
{
return F(var)*(1-F(var));
}
void main()
{
time_t t;
ofstream fout("E:\\output.txt");
srand((unsigned) time(&t));
float opvar=0.5,outerr=0;
float operr=0,modf=0,miderr[4]={0},prrorerr1[4][3]={0},prrorerr2[4]={0};
float weight[M][node][node]={0},midsum[4]={0},midre[4]={0},lastin=0,result=0;
float X[8][3]={0,0,0,0,0,1,0,1,0,0,1,1,1,0,0,1,0,1,1,1,0,1,1,1},T[8]={0,1,1,0,1,0,0,1},input[4]={0};
int i,j,k,hh,pp,qq,resultint=-1;
initw(weight);
for(qq=0;qq<1;qq++)
{
resultint=-1;
for(pp=0;pp<1000;pp++)
{
i=rand()%8;
input[0]=X[i][0];
input[1]=X[i][1];
input[2]=X[i][2];
input[3]=1;
for(hh=0;hh<100;hh++)
{
for(j=0;j<3;j++)
{
midsum[j]=sum(weight[1],input,j,4);
midre[j]=F(midsum[j]);
}
midre[3]=1;
lastin=sum(weight[2],midre,0,4);
result=F(lastin);
operr=Fd(lastin)*(T[i]-result);
for(j=0;j<3;j++)
miderr[j]=Fd(midsum[j])*weight[2][j][0]*operr;
for(j=0;j<4;j++)
{
modf=opvar*operr*midre[j]+0.9*prrorerr2[j];
weight[2][j][0]=weight[2][j][0]+modf;
prrorerr2[j]=modf;
}
for(j=0;j<3;j++)
for(k=0;k<4;k++)
{
modf=opvar*miderr[j]*input[k]+prrorerr1[k][j]*0.9;
weight[1][k][j]=weight[1][k][j]+modf;
prrorerr1[k][j]=modf;
}
if(pp==3)
{
outerr=(T[i]-result)*(T[i]-result)/2;
fout<<outerr<<endl;
}
}
}
input[0]=X[i][0]+(float)(rand()%100-50)/1000;
input[1]=X[i][1]+(float)(rand()%100-50)/1000;
input[2]=X[i][2]+(float)(rand()%100-50)/1000;
input[3]=1;
for(j=0;j<4;j++)
{
midsum[j]=sum(weight[1],input,j,4);
midre[j]=F(midsum[j]);
}
lastin=sum(weight[2],midre,0,4);
result=F(lastin);
if(result>0.9)
resultint=1;
if(result<0.1)
resultint=0;
cout<<result<<" "<<resultint<<endl;
cout<<input[0]<<" "<<input[1]<<" "<<input[2]<<endl;
cout<<"*****************************************"<<endl;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -