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

📄 weight_update.c

📁 C-package of "Long Short-Term Memory" for Protein classification
💻 C
字号:
/* * $Id: weight_update.c 1272 2007-05-09 16:26:20Z mhe $ */#include <stdio.h>#include <stdlib.h>#include <math.h>#include "lstm.h"#include "weight_update.h"#include "regularization.h"void weight_update() {     int i,j,k,u,v;      // use a regularization matrices or not   #define REGUMAT 1   //#undef REGUMAT   /* output units */    for (k=cell_mod,j=0;k<ges_mod;k++,j++) {        /* memory cell */        i=in_mod_b+1;        for (u=0;u<num_blocks;u++) {            i++;            for (v=0;v<block_size[u];v++) {               i++;               W[k][i] +=  DW[k][i];               DW[k][i] = 0;            }            i++;        }        /* bias */        W[k][in_mod_b] +=  DW[k][in_mod_b];        DW[k][in_mod_b] = 0;    }    /* memory cells with gates */    i=in_mod_b+1;    for (u=0;u<num_blocks;u++) {        for (j=in_mod_b;j<cell_mod;j++) {            W[i][j] +=  DW[i][j];            DW[i][j] = 0;        }               i++;        for (j=in_mod_b;j<cell_mod;j++) {            W[i][j] += DW[i][j];            DW[i][j] = 0;        }                for (v=0;v<block_size[u];v++) {            i++; #ifdef REGUMAT                                    int j0 = 0; // begin of current aa segment            int k0 = 0; // index of current aa in current aa segment (0-19)            double dwtmpa[AAS];                        for (k=0;k<AAS;k++) {                dwtmpa[k] = 0;            }                            for (j=0;j<in_mod_b;j++,k0++) {                                        if (k0 == AAS) {                                            for (k=0;k<AAS;k++) {                        W[i][j0 + k] +=  dwtmpa[k];                        DW[i][j0 + k] = 0;                            dwtmpa[k] = 0;                      }                                            j0 += AAS;                      k0 = 0;                                          }                                        for (k=0;k<AAS;k++) {                                                // Gonnet500 matrix gives good results                                                if (gonnet500skal0[k0][k]) {                            dwtmpa[k] += DW[i][j0 + k] * gonnet500skal0[k0][k];                        }                                            }                                   }                           for (k=0;k<AAS;k++) {                W[i][j0 + k] +=  dwtmpa[k];                DW[i][j0 + k] = 0;                }                        #else                                    for (j=0;j<in_mod_b;j++) {                                                       W[i][j] +=  DW[i][j];                    DW[i][j] = 0;                           } #endif                                           for (j=in_mod_b;j<cell_mod;j++) {                W[i][j] +=  DW[i][j];                DW[i][j] = 0;            }                                }        i++;    }}

⌨️ 快捷键说明

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