⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bp.txt

📁 bp算法
💻 TXT
字号:
  用C 语言实现的程序如下:
# define m 11 / * 输入层节点数* / 
# define p11 /* 隐含层节点数* /
# define q 18 / *输出层节点数* / 
# define n1087 / * 训练对数* /
# defineε0. 001 / * 全局误差范围* / 
float w[m] [p ] ; / * 输入层隐含层之间的权值矩阵* /
float v [p ] [ q ] ; / * 隐含层输出层之间的权值矩阵* /
float s[p ] ,b[p ] ; / * 隐含层的输入、输出值矩阵3 /
float l[q] , c[ q] , d[q] ; / * 输出层的输入、输出及校正误差值矩阵* /
float a[m] ; / * 输入层矩阵* / 
int y[ q] ; / * 输出层的矩阵* /
typedef FIL E gh ; gh 3 g1 , 3 g2 ;
void aproce ( ) ; / * 读入火成岩的编号和相应11 种化学成分数据3 /
void sproce () ; / *计算隐含层的输入*/ 
void bproce () ; / * 计算隐含层的输出* /
void lproce ( ) ; / * 计算输出层的输入* / 
void cproce () ; / * 计算输出层的输出* /
void main ()
{for (j = 0 ;j < p ;j + + )  / * 给连接权赋初值*/
    for (t = 0 ;t < q ;t + + )  v[ j ] [ t ] = 1. 0 - 2. 0 *(rand () / (float32767) ;
        for (i = 0 ;i < m ;i + + ) for (j = 0 ;j < p ;j + + ) w[ i ] [j ] = 1. 0 - 2. 0 3 (rand () / (float) 32767) ;
        g2 = fopen (“aim. dat”, “wb”) ;
        do
           { g1 = fopen (“source. dat”, “rb”) ;
                for (k = 0 ;k < n ;k + + )
                   { aproce ( ;for (t = 1 ; t < 19 ; t + + )  
                                    {if ( t ==a0 y[ t - 1 ] = 1 ; else y[ t - 1 ] = 0 ;}
                                                sproce ( ) ;  
                                                bproce ( ) ;  
                                                lproce ( ) ;  
                                                cproce() ;
                               for (t = 0 ;t < q ;t + + )
                        f [ k ] = f [ k ] + (y[ t ] - c[ t ]3 ) (y[ t ] - c[ t ] ; 
                        f [ k ]= f [ k ]/ 2. 0 ; 
                        E = E + f [ k ] ;
                      if (f [ k ] < 0. 4)  b1 = a1 = f [ k ] ; 
                    else  b1 = a1= 0. 35 ;  / * 修正学习率* /
             for (t = 0 ;t < q ;t + + )  d[ t ] = (y[ t ] - c[ t ]) 3c[ t ] 3 (1. 0 - c[ t ]) ;
     for (j = 0 ;j < p ;j + + )  
         for ( t = 0 ; t < q ; t + + )
                v[j ] [ t ] = v[ j ] [ t ] + a1 3 b[ j ] 3 d[ t ] ; / * 修正权值* /
     for (j = 0 ;j < p ;j + + )
               { for (t = 0 ; t < q ; t + + ) d3 = d3 + d [ t ] 3 v[ j ][ t ] ; 
                 e[j ] = d3 3 b[j ] 3 (1. 0 - b[j ]) ; } /* 修正误差* /
        for (i = 0 ;i < m ;i + + ) 
             for (j = 0 ;j < p ;j + + )
                  w[i ] [j ] = w[ i ] [ j ] + b1 3 a [ i ] 3 e [ j ] ;} / * 修正权值* /
                         E = E/ n ; / 3 修正全局误差3 / n1 + + ;}
                         while ( E >ε) ;
                           for (i = 0 ;i < m ;i + + )  / *输出权值w 到数据文件* /
                             {for (j = 0 ;j < p ;j + + ) fprintf (g2 ,”%f”,w[ i ][ j ]) ; 
                              fprintf (g2 ,”\ n”) ;}
                         for (j = 0 ;j < p ;j + + )  / * 输出权值v 到数据文件* /
                           {for (t = 0 ;t < q ;t + + ) fprintf (g2 ,”%f”,v[ j ][ t ]) ;
                             fprintf (g2 ,”\ n”) ;}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -