国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

TensorFlow實現RNN循環神經網絡

2020-02-22 23:20:12
字體:
來源:轉載
供稿:網友

RNN(recurrent neural Network)循環神經網絡

主要用于自然語言處理(nature language processing,NLP)

RNN主要用途是處理和預測序列數據

RNN廣泛的用于 語音識別、語言模型、機器翻譯

RNN的來源就是為了刻畫一個序列當前的輸出與之前的信息影響后面節點的輸出

RNN 是包含循環的網絡,允許信息的持久化。

RNN會記憶之前的信息,并利用之前的信息影響后面節點的輸出。

RNN的隱藏層之間的節點是有相連的,隱藏層的輸入不僅僅包括輸入層的輸出,還包括上一時刻隱藏層的輸出。

RNN會對于每一個時刻的輸入結合當前模型的狀態給出一個輸出。

RNN理論上被看作同一個神經網絡結構被無限復制的結果,目前RNN無法做到真正的無限循環,一般以循環體展開。

RNN圖:


RNN最擅長的問題是與時間序列相關的。

RNN對于一個序列數據,可以將序列上不同時刻的數據依次輸入循環神經網絡的輸入層,而輸出可以是對序列中下一個時刻的預測,也可以是對當前時刻信息的處理結果。

RNN 的關鍵點之一就是他們可以用來連接先前的信息到當前的任務上

展開后的RNN:


循環體網絡中的參數在不同的時刻也是共享的。

RNN的狀態是通過一個向量來表示,這個向量的維度也稱為RNN隱藏層的大小。

假如該向量為h,輸入為x,激活函數為tanh,則有如圖:


前向傳播的計算過程:


理論上RNN可以支持任意長度的序列,但是如果序列太長會導致優化時實現梯度消失的問題,一般會設置最大長度,超長會對其截斷。

 代碼實現簡單的RNN:

import numpy as np  # 定義RNN的參數。 X = [1,2] state = [0.0, 0.0] w_cell_state = np.asarray([[0.1, 0.2], [0.3, 0.4]]) w_cell_input = np.asarray([0.5, 0.6]) b_cell = np.asarray([0.1, -0.1]) w_output = np.asarray([[1.0], [2.0]]) b_output = 0.1  # 執行前向傳播過程。 for i in range(len(X)):   before_activation = np.dot(state, w_cell_state) + X[i] * w_cell_input + b_cell   state = np.tanh(before_activation)   final_output = np.dot(state, w_output) + b_output   print ("before activation: ", before_activation)   print ("state: ", state)   print ("output: ", final_output) 

LSTM(long short-term memory)長短時記憶網絡: 

LSTM解決了RNN不支持長期依賴的問題,使其大幅度提升記憶時長。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荣昌县| 成安县| 尉氏县| 禹州市| 盐亭县| 濮阳市| 沙洋县| 介休市| 康保县| 烟台市| 克拉玛依市| 盘锦市| 凌云县| 金川县| 原平市| 沙坪坝区| 镇宁| 荃湾区| 通化市| 额尔古纳市| 海林市| 宽甸| 偃师市| 辉南县| 柘荣县| 全州县| 武清区| 榆林市| 津南区| 盱眙县| 榆中县| 元氏县| 广东省| 太仆寺旗| 雅安市| 河源市| 吉林市| 清涧县| 科技| 年辖:市辖区| 慈溪市|