C語(yǔ)言LSTM隱層神經(jīng)元結(jié)構(gòu):
LSTM隱層神經(jīng)元詳細(xì)結(jié)構(gòu):
//讓程序自己學(xué)會(huì)是否需要進(jìn)位,從而學(xué)會(huì)加法#include "iostream"#include "math.h"#include "stdlib.h"#include "time.h"#include "vector"#include "assert.h"using namespace std;#define innode 2 //輸入結(jié)點(diǎn)數(shù),將輸入2個(gè)加數(shù)#define hidenode 26 //隱藏結(jié)點(diǎn)數(shù),存儲(chǔ)“攜帶位”#define outnode 1 //輸出結(jié)點(diǎn)數(shù),將輸出一個(gè)預(yù)測(cè)數(shù)字#define alpha 0.1 //學(xué)習(xí)速率#define binary_dim 8 //二進(jìn)制數(shù)的最大長(zhǎng)度#define randval(high) ( (double)rand() / RAND_MAX * high )#define uniform_plus_minus_one ( (double)( 2.0 * rand() ) / ((double)RAND_MAX + 1.0) - 1.0 ) //均勻隨機(jī)分布int largest_number = ( pow(2, binary_dim) ); //跟二進(jìn)制最大長(zhǎng)度對(duì)應(yīng)的可以表示的最大十進(jìn)制數(shù)//激活函數(shù)double sigmoid(double x) { return 1.0 / (1.0 + exp(-x)); }//激活函數(shù)的導(dǎo)數(shù),y為激活函數(shù)值double dsigmoid(double y) { return y * (1.0 - y); } //tanh的導(dǎo)數(shù),y為tanh值double dtanh(double y) { y = tanh(y); return 1.0 - y * y; }//將一個(gè)10進(jìn)制整數(shù)轉(zhuǎn)換為2進(jìn)制數(shù)void int2binary(int n, int *arr) { int i = 0; while(n) { arr[i++] = n % 2; n /= 2; } while(i < binary_dim) ? ? ? ?arr[i++] = 0; }class RNN {public: ? ?RNN(); ? ?virtual ~RNN(); ? ?void train();public: ? ?double W_I[innode][hidenode]; ? ? //連接輸入與隱含層單元中輸入門(mén)的權(quán)值矩陣 ? ?double U_I[hidenode][hidenode]; ? //連接上一隱層輸出與本隱含層單元中輸入門(mén)的權(quán)值矩陣 ? ?double W_F[innode][hidenode]; ? ? //連接輸入與隱含層單元中遺忘門(mén)的權(quán)值矩陣 ? ?double U_F[hidenode][hidenode]; ? //連接上一隱含層與本隱含層單元中遺忘門(mén)的權(quán)值矩陣 ? ?double W_O[innode][hidenode]; ? ? //連接輸入與隱含層單元中遺忘門(mén)的權(quán)值矩陣 ? ?double U_O[hidenode][hidenode]; ? //連接上一隱含層與現(xiàn)在時(shí)刻的隱含層的權(quán)值矩陣 ? ?double W_G[innode][hidenode]; ? ? //用于產(chǎn)生新記憶的權(quán)值矩陣 ? ?double U_G[hidenode][hidenode]; ? //用于產(chǎn)生新記憶的權(quán)值矩陣 ? ?double W_out[hidenode][outnode]; ?//連接隱層與輸出層的權(quán)值矩陣 ? ?double *x; ? ? ? ? ? ? //layer 0 輸出值,由輸入向量直接設(shè)定 ? ?//double *layer_1; ? ? //layer 1 輸出值 ? ?double *y; ? ? ? ? ? ? //layer 2 輸出值};void winit(double w[], int n) //權(quán)值初始化{ ? ?for(int i=0; i
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7628瀏覽量
139953 -
程序
+關(guān)注
關(guān)注
117文章
3817瀏覽量
82244 -
神經(jīng)元
+關(guān)注
關(guān)注
1文章
368瀏覽量
18726
原文標(biāo)題:LSTM神經(jīng)網(wǎng)絡(luò)的詳細(xì)推導(dǎo)與c++實(shí)現(xiàn)
文章出處:【微信號(hào):C_Expert,微信公眾號(hào):C語(yǔ)言專(zhuān)家集中營(yíng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
神經(jīng)網(wǎng)絡(luò)教程(李亞非)
【案例分享】基于BP算法的前饋神經(jīng)網(wǎng)絡(luò)
【案例分享】ART神經(jīng)網(wǎng)絡(luò)與SOM神經(jīng)網(wǎng)絡(luò)
模糊控制與神經(jīng)網(wǎng)絡(luò)的資料總結(jié)

神經(jīng)元的信息傳遞方式是什么
神經(jīng)元的基本作用是什么信息
神經(jīng)元的結(jié)構(gòu)及功能是什么
神經(jīng)元的分類(lèi)包括哪些
神經(jīng)網(wǎng)絡(luò)三層結(jié)構(gòu)的作用是什么
人工智能神經(jīng)元的基本結(jié)構(gòu)
生物神經(jīng)元模型包含哪些元素
人工神經(jīng)元模型的基本構(gòu)成要素
神經(jīng)元是什么?神經(jīng)元在神經(jīng)系統(tǒng)中的作用

評(píng)論