chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LSTM隱層神經(jīng)元結(jié)構(gòu)分析,及應(yīng)用的程序詳細概述

C語言專家集中營 ? 來源:未知 ? 作者:易水寒 ? 2018-07-29 10:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

C語言LSTM隱層神經(jīng)元結(jié)構(gòu):

LSTM隱層神經(jīng)元詳細結(jié)構(gòu):

//讓程序自己學(xué)會是否需要進位,從而學(xué)會加法#include "iostream"#include "math.h"#include "stdlib.h"#include "time.h"#include "vector"#include "assert.h"using namespace std;#define innode 2 //輸入結(jié)點數(shù),將輸入2個加數(shù)#define hidenode 26 //隱藏結(jié)點數(shù),存儲“攜帶位”#define outnode 1 //輸出結(jié)點數(shù),將輸出一個預(yù)測數(shù)字#define alpha 0.1 //學(xué)習(xí)速率#define binary_dim 8 //二進制數(shù)的最大長度#define randval(high) ( (double)rand() / RAND_MAX * high )#define uniform_plus_minus_one ( (double)( 2.0 * rand() ) / ((double)RAND_MAX + 1.0) - 1.0 ) //均勻隨機分布int largest_number = ( pow(2, binary_dim) ); //跟二進制最大長度對應(yīng)的可以表示的最大十進制數(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; }//將一個10進制整數(shù)轉(zhuǎn)換為2進制數(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]; ? ? //連接輸入與隱含層單元中輸入門的權(quán)值矩陣 ? ?double U_I[hidenode][hidenode]; ? //連接上一隱層輸出與本隱含層單元中輸入門的權(quán)值矩陣 ? ?double W_F[innode][hidenode]; ? ? //連接輸入與隱含層單元中遺忘門的權(quán)值矩陣 ? ?double U_F[hidenode][hidenode]; ? //連接上一隱含層與本隱含層單元中遺忘門的權(quán)值矩陣 ? ?double W_O[innode][hidenode]; ? ? //連接輸入與隱含層單元中遺忘門的權(quán)值矩陣 ? ?double U_O[hidenode][hidenode]; ? //連接上一隱含層與現(xiàn)在時刻的隱含層的權(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 I_vector; //輸入門 vector F_vector; //遺忘門 vector O_vector; //輸出門 vector G_vector; //新記憶 vector S_vector; //狀態(tài)值 vector h_vector; //輸出值 vector y_delta; //保存誤差關(guān)于輸出層的偏導(dǎo) for(epoch=0; epoch<11000; epoch++) ?//訓(xùn)練次數(shù) ? ?{ ? ? ? ?double e = 0.0; ?//誤差 ? ? ? ?int predict[binary_dim]; ? ? ? ? ? ? ? //保存每次生成的預(yù)測值 ? ? ? ?memset(predict, 0, sizeof(predict)); ? ? ? ?int a_int = (int)randval(largest_number/2.0); ?//隨機生成一個加數(shù) a ? ? ? ?int a[binary_dim]; ? ? ? ?int2binary(a_int, a); ? ? ? ? ? ? ? ? //轉(zhuǎn)為二進制數(shù) ? ? ? ?int b_int = (int)randval(largest_number/2.0); ?//隨機生成另一個加數(shù) b ? ? ? ?int b[binary_dim]; ? ? ? ?int2binary(b_int, b); ? ? ? ? ? ? ? ? //轉(zhuǎn)為二進制數(shù) ? ? ? ?int c_int = a_int + b_int; ? ? ? ? ? ?//真實的和 c ? ? ? ?int c[binary_dim]; ? ? ? ?int2binary(c_int, c); ? ? ? ? ? ? ? ? //轉(zhuǎn)為二進制數(shù) ? ? ? ?//在0時刻是沒有之前的隱含層的,所以初始化一個全為0的 ? ? ? ?double *S = new double[hidenode]; ? ? //狀態(tài)值 ? ? ? ?double *h = new double[hidenode]; ? ? //輸出值 ? ? ? ?for(i=0; i=0 ; p--) { x[0] = a[p]; x[1] = b[p]; //當(dāng)前隱藏層 double *in_gate = I_vector[p]; //輸入門 double *out_gate = O_vector[p]; //輸出門 double *forget_gate = F_vector[p]; //遺忘門 double *g_gate = G_vector[p]; //新記憶 double *state = S_vector[p+1]; //狀態(tài)值 double *h = h_vector[p+1]; //隱層輸出值 //前一個隱藏層 double *h_pre = h_vector[p]; double *state_pre = S_vector[p]; for(k=0; k=0; k--) cout << predict[k]; ? ? ? ? ? ?cout << endl; ? ? ? ? ? ?cout << "true:" ; ? ? ? ? ? ?for(k=binary_dim-1; k>=0; k--) cout << c[k]; ? ? ? ? ? ?cout << endl; ? ? ? ? ? ?int out = 0; ? ? ? ? ? ?for(k=binary_dim-1; k>=0; k--) out += predict[k] * pow(2, k); cout << a_int << " + " << b_int << " = " << out << endl << endl; ? ? ? ?} ? ? ? ?for(i=0; i

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7642

    瀏覽量

    144527
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3836

    瀏覽量

    84737
  • 神經(jīng)元
    +關(guān)注

    關(guān)注

    1

    文章

    369

    瀏覽量

    19103

原文標(biāo)題:LSTM神經(jīng)網(wǎng)絡(luò)的詳細推導(dǎo)與c++實現(xiàn)

文章出處:【微信號:C_Expert,微信公眾號:C語言專家集中營】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    脈沖神經(jīng)元模型的硬件實現(xiàn)

    自己的存儲單元,位于 LIF 神經(jīng)元模塊旁邊。這種分布式的SRAM實現(xiàn)了近似存算一體的架構(gòu),解決了傳統(tǒng)的馮諾依曼結(jié)構(gòu)帶來的瓶頸,減少了數(shù)據(jù)的遠距離搬運;神經(jīng)核接口模塊主要負責(zé)完成脈沖數(shù)據(jù)包和數(shù)據(jù)微片
    發(fā)表于 10-24 08:27

    SNN加速器內(nèi)部神經(jīng)元數(shù)據(jù)連接方式

    所謂地址事件表達(Address Event Representation,AER),是指通過地址的方式將事件進行表達,然后按時間順序復(fù)用到總線上。已知生物神經(jīng)元產(chǎn)生脈沖的頻率比數(shù)字電路要低很多
    發(fā)表于 10-24 07:34

    神經(jīng)網(wǎng)絡(luò)教程(李亞非)

    神經(jīng)元  第3章 EBP網(wǎng)絡(luò)(反向傳播算法)  3.1 含的前饋網(wǎng)絡(luò)的學(xué)習(xí)規(guī)則  3.2 Sigmoid激發(fā)函數(shù)下的BP算法  3.3 BP網(wǎng)絡(luò)的訓(xùn)練與測試  3.4 BP算法的改進  3.5 多層
    發(fā)表于 03-20 11:32

    【案例分享】基于BP算法的前饋神經(jīng)網(wǎng)絡(luò)

    期望的輸出。BP神經(jīng)網(wǎng)絡(luò)算法推導(dǎo)(更新權(quán)重和偏倚):從上面推導(dǎo)可以發(fā)現(xiàn):對于任意從神經(jīng)元i(輸出神經(jīng)元/
    發(fā)表于 07-21 04:00

    【案例分享】ART神經(jīng)網(wǎng)絡(luò)與SOM神經(jīng)網(wǎng)絡(luò)

    的拓撲結(jié)構(gòu),即將高位空間中相似的樣本點映射到網(wǎng)絡(luò)輸出中的鄰近神經(jīng)元。SOM神經(jīng)網(wǎng)絡(luò)中的輸出神經(jīng)元
    發(fā)表于 07-21 04:30

    模糊控制與神經(jīng)網(wǎng)絡(luò)的資料總結(jié)

    如圖所示拓撲結(jié)構(gòu)的單前饋網(wǎng)絡(luò),一般稱為三前饋網(wǎng)或三感知器,即:輸入、中間層(也稱
    發(fā)表于 03-01 10:09 ?17次下載
    模糊控制與<b class='flag-5'>神經(jīng)</b>網(wǎng)絡(luò)的資料總結(jié)

    神經(jīng)元 C 參考指南

    神經(jīng)元 C 參考指南
    發(fā)表于 07-04 20:48 ?0次下載
    <b class='flag-5'>神經(jīng)元</b> C 參考指南

    神經(jīng)元的信息傳遞方式是什么

    神經(jīng)元神經(jīng)系統(tǒng)的基本單位,它們通過電信號和化學(xué)信號的方式進行信息傳遞。 神經(jīng)元的信息傳遞方式 神經(jīng)元結(jié)構(gòu)和功能
    的頭像 發(fā)表于 07-03 11:27 ?3417次閱讀

    神經(jīng)元的基本作用是什么信息

    神經(jīng)元神經(jīng)系統(tǒng)的基本功能單位,它們在大腦、脊髓和周圍神經(jīng)系統(tǒng)中發(fā)揮著至關(guān)重要的作用。神經(jīng)元的基本作用是接收、處理和傳遞信息。本文將詳細介紹
    的頭像 發(fā)表于 07-03 11:29 ?2715次閱讀

    神經(jīng)元結(jié)構(gòu)及功能是什么

    神經(jīng)元神經(jīng)系統(tǒng)的基本結(jié)構(gòu)和功能單位,它們通過電信號和化學(xué)信號進行信息傳遞和處理。神經(jīng)元結(jié)構(gòu)和功能非常復(fù)雜,涉及到許多不同的方面。 一、
    的頭像 發(fā)表于 07-03 11:33 ?3721次閱讀

    神經(jīng)元的分類包括哪些

    )是神經(jīng)系統(tǒng)的基本功能單位,是一種高度分化的細胞,具有接收、傳遞和處理信息的能力。神經(jīng)元通過電信號和化學(xué)信號進行信息傳遞和處理,是神經(jīng)系統(tǒng)中最重要的細胞類型。 1.2 神經(jīng)元
    的頭像 發(fā)表于 07-03 11:36 ?3867次閱讀

    神經(jīng)網(wǎng)絡(luò)三結(jié)構(gòu)的作用是什么

    網(wǎng)絡(luò)的三結(jié)構(gòu)是最基本的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),包括輸入、隱藏和輸出。下面介紹
    的頭像 發(fā)表于 07-11 11:03 ?2517次閱讀

    人工智能神經(jīng)元的基本結(jié)構(gòu)

    ,旨在創(chuàng)建能夠執(zhí)行通常需要人類智能的任務(wù)的計算機系統(tǒng)。神經(jīng)元是構(gòu)成人腦的基本單元,也是人工智能研究的基礎(chǔ)。本文將詳細介紹人工智能神經(jīng)元的基本結(jié)構(gòu)。
    的頭像 發(fā)表于 07-11 11:19 ?2857次閱讀

    神經(jīng)元是什么?神經(jīng)元神經(jīng)系統(tǒng)中的作用

    神經(jīng)元,又稱神經(jīng)細胞,是神經(jīng)系統(tǒng)的基本結(jié)構(gòu)和功能單位。它們負責(zé)接收、整合、傳導(dǎo)和傳遞信息,從而參與和調(diào)控神經(jīng)系統(tǒng)的各種活動。
    的頭像 發(fā)表于 07-12 11:49 ?5509次閱讀
    <b class='flag-5'>神經(jīng)元</b>是什么?<b class='flag-5'>神經(jīng)元</b>在<b class='flag-5'>神經(jīng)</b>系統(tǒng)中的作用

    LSTM神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)與工作機制

    網(wǎng)絡(luò)的結(jié)構(gòu)與工作機制的介紹: 一、LSTM神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu) LSTM神經(jīng)網(wǎng)絡(luò)的
    的頭像 發(fā)表于 11-13 10:05 ?2199次閱讀