婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 變長雙向rnn的正確使用姿勢教學

變長雙向rnn的正確使用姿勢教學

熱門標簽:朝陽手機外呼系統 北瀚ai電銷機器人官網手機版 地圖標注面積 所得系統電梯怎樣主板設置外呼 小蘇云呼電話機器人 北京電銷外呼系統加盟 儋州電話機器人 市場上的電銷機器人 佛山400電話辦理

如何使用雙向RNN

在《深度學習之TensorFlow入門、原理與進階實戰》一書的9.4.2中的第4小節中,介紹過變長動態RNN的實現。

這里在來延伸的講解一下雙向動態rnn在處理變長序列時的應用。其實雙向RNN的使用中,有一個隱含的注意事項,非常容易犯錯。

本文就在介紹下雙向RNN的常用函數、用法及注意事項。

動態雙向rnn有兩個函數:

stack_bidirectional_dynamic_rnn
bidirectional_dynamic_rnn

二者的實現上大同小異,放置的位置也不一樣,前者放在contrib下面,而后者顯得更加根紅苗正,放在了tf的核心庫下面。在使用時二者的返回值也有所區別。下面就來一一介紹。

示例代碼

先以GRU的cell代碼為例:

import tensorflow as tf
import numpy as np
tf.reset_default_graph()
# 創建輸入數據
X = np.random.randn(2, 4, 5)# 批次 、序列長度、樣本維度
# 第二個樣本長度為3
X[1,2:] = 0
seq_lengths = [4, 2]
Gstacked_rnn = []
Gstacked_bw_rnn = []
for i in range(3):
    Gstacked_rnn.append(tf.contrib.rnn.GRUCell(3))
    Gstacked_bw_rnn.append(tf.contrib.rnn.GRUCell(3))
#建立前向和后向的三層RNN
Gmcell = tf.contrib.rnn.MultiRNNCell(Gstacked_rnn)
Gmcell_bw = tf.contrib.rnn.MultiRNNCell(Gstacked_bw_rnn)
sGbioutputs, sGoutput_state_fw, sGoutput_state_bw = tf.contrib.rnn.stack_bidirectional_dynamic_rnn([Gmcell],[Gmcell_bw], X,sequence_length=seq_lengths,                                           dtype=tf.float64)
Gbioutputs, Goutput_state_fw = tf.nn.bidirectional_dynamic_rnn(Gmcell,Gmcell_bw, X,sequence_length=seq_lengths,dtype=tf.float64)

上面例子中是創建雙向RNN的方法示例。可以看到帶有stack的雙向RNN會輸出3個返回值,而不帶有stack的雙向RNN會輸出2個返回值。

這里面還要注意的是,在沒有未cell初始化時必須要將dtype參數賦值。不然會報錯。

代碼:BiRNN輸出

下面添加代碼,將輸出的值打印出來,看一下,這兩個函數到底是輸出的是啥?

#建立一個會話
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
sgbresult,sgstate_fw,sgstate_bw=sess.run([sGbioutputs,sGoutput_state_fw,sGoutput_state_bw])
print("全序列:\n", sgbresult[0])
print("短序列:\n", sgbresult[1])
print('Gru的狀態:',len(sgstate_fw[0]),'\n',sgstate_fw[0][0],'\n',sgstate_fw[0][1],'\n',sgstate_fw[0][2])
print('Gru的狀態:',len(sgstate_bw[0]),'\n',sgstate_bw[0][0],'\n',sgstate_bw[0][1],'\n',sgstate_bw[0][2])

先看一下帶有stack的雙向RNN輸出的內容:

我們輸入的數據的批次是2,第一個序列長度是4,第二個序列長度是2.

圖中共有4部分輸出,可以看到,第一部分(全序列)就是序列長度為4的結果,第二部分(短序列)就是序列長度為2的結果。由于沒一層都是由3個RNN的GRU cell組成,所以每個序列的輸出都為3.很顯然,對于這樣的結果輸出,必須要將短序列后面的0去掉才可以用。

好在該函數還有第二個輸出值,GRU的狀態。可以直接使用狀態里的值,而不需要對原始結果進行去0的變化。

由于單個GRU本來就是沒有狀態的。所以該函數將最后的輸出作為狀態返回。該函數有兩個狀態返回,分別代表前向和后向。每一個方向的狀態都會返回3個元素。這是因為每個方向的網絡都有3層GRU組成。在使用時,一般都會取最后一個狀態。圖中紅色部分為前向中,兩個樣本對應的輸出,這個很好理解。

重點要看藍色的部分,即反向的狀態值對應的是原始數據中最其實的序列輸入。因為是反向RNN,在反向循環時,是會把序列中最后的放在最前面,所以反向網絡的生成結果就會與最開始的序列相對應。

對于特征提取任務處理時,正向與反向的最后值都為該序列的特征,需要合并起來統一處理。但是對于下一個序列預測任務時,建議直接使用正向的RNN網絡就可以了。

如果要獲取雙向RNN的結果,尤其是變長情況下,通過狀態拿到值直接拼接起來才是正確的做法。即便不是變長。直接使用輸出值來拼接,會損失掉反向的一部分特征結果。這是需要值得注意的地方。

代碼:BiRNN輸出

好了。在接著看下不帶stack的函數輸出是什么樣子的

gbresult,state_fw=sess.run([Gbioutputs,Goutput_state_fw])
print("正向:\n", gbresult[0])
print("反向:\n", gbresult[1])
print('狀態:',len(state_fw),'\n',state_fw[0],'\n',state_fw[1])  #state_fw[0]:【層,批次,cell個數】 重頭到最后一個序列
print(state_fw[0][-1],state_fw[1][-1])
out  = np.concatenate((state_fw[0][-1],state_fw[1][-1]),axis = 1)
print("拼接",out)

這次,在輸出基本內容基礎上,直接將結果拼接起來。上面代碼運行后會輸出如下內容。

同樣正向用紅色,反向用藍色。改函數返回的輸出值,沒有將正反向拼接。輸出的狀態雖然是一個值,但是里面有兩個元素,一個代表正向狀態,一個代表反向狀態.

從輸出中可以看到,最后一行實現了最終結果的真正拼接。在使用雙向rnn時可以按照上面的例子代碼將其狀態拼接成一條完整輸出,然后在進行處理。

代碼:LSTM的雙向RNN

類似的如果想使用LSTM cell。將前面的GRU部分替換即可,代碼如下:

stacked_rnn = []
stacked_bw_rnn = []
for i in range(3):
    stacked_rnn.append(tf.contrib.rnn.LSTMCell(3))
    stacked_bw_rnn.append(tf.contrib.rnn.LSTMCell(3))
mcell = tf.contrib.rnn.MultiRNNCell(stacked_rnn)
mcell_bw = tf.contrib.rnn.MultiRNNCell(stacked_bw_rnn)    
bioutputs, output_state_fw, output_state_bw = tf.contrib.rnn.stack_bidirectional_dynamic_rnn([mcell],[mcell_bw], X,sequence_length=seq_lengths,
                                              dtype=tf.float64)
bioutputs, output_state_fw = tf.nn.bidirectional_dynamic_rnn(mcell,mcell_bw, X,sequence_length=seq_lengths,
                                              dtype=tf.float64)

至于輸出的內容是什么,可以按照前面GRU的輸出部分顯示出來自己觀察。如何拼接,也可以參照GRU的例子來做。

通過將正反向的狀態拼接起來才可以獲得雙向RNN的最終輸出特征。千萬不要直接拿著輸出不加處理的來進行后續的運算,這會損失一大部分的運算特征。

該部分內容屬于《深度學習之TensorFlow入門、原理與進階實戰》一書的內容補充。關于RNN的更多介紹可以參看書中第九章的詳細內容。

我對雙向RNN 的理解

1、雙向RNN使用的場景:有些情況下,當前的輸出不只依賴于之前的序列元素,還可能依賴之后的序列元素; 比如做完形填空,機器翻譯等應用。

2、Tensorflow 中實現雙向RNN 的API是:bidirectional_dynamic_rnn; 其本質主要是做了兩次reverse:

第一次reverse:將輸入序列進行reverse,然后送入dynamic_rnn做一次運算.

第二次reverse:將上面dynamic_rnn返回的outputs進行reverse,保證正向和反向輸出的time是對上的.

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Tensorflow與RNN、雙向LSTM等的踩坑記錄及解決
  • 淺談Tensorflow 動態雙向RNN的輸出問題
  • 雙向RNN:bidirectional_dynamic_rnn()函數的使用詳解

標簽:寧夏 酒泉 江蘇 定西 云南 商丘 金融催收 龍巖

巨人網絡通訊聲明:本文標題《變長雙向rnn的正確使用姿勢教學》,本文關鍵詞  變長,雙向,rnn,的,正確,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《變長雙向rnn的正確使用姿勢教學》相關的同類信息!
  • 本頁收集關于變長雙向rnn的正確使用姿勢教學的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品热久久久久夜色精品三区 | 国产91精品露脸国语对白| 91福利精品视频| 一区二区三区影院| 色诱视频网站一区| 婷婷久久综合九色综合绿巨人| 555www色欧美视频| 另类调教123区| 久久久亚洲午夜电影| 成人动漫中文字幕| 亚洲国产精品久久艾草纯爱| 日韩三级中文字幕| 成人久久18免费网站麻豆| 香蕉加勒比综合久久| 久久色视频免费观看| 99久久99久久免费精品蜜臀| 亚洲成av人片观看| 日韩电影在线一区| 亚洲欧美综合在线精品| 欧美三区免费完整视频在线观看| 精品综合免费视频观看| 亚洲国产婷婷综合在线精品| 五月天亚洲婷婷| 久久99久久99精品免视看婷婷| 国产成人av电影在线播放| av网站一区二区三区| 国产黄色成人av| 男女男精品网站| 亚洲地区一二三色| 久国产精品韩国三级视频| 丰满少妇久久久久久久| 欧美狂野另类xxxxoooo| 91亚洲精品久久久蜜桃| 国产精品一二三四五| 午夜电影网一区| 国产精品美日韩| 日韩精品一区二区三区蜜臀 | 精品国产3级a| 欧美精品一级二级| 欧美激情一区三区| 久久久久久亚洲综合影院红桃| 国产精品国产三级国产普通话99| 久久免费电影网| 亚洲高清视频在线| 成人av小说网| 欧美久久久久中文字幕| 中文字幕在线不卡一区| 免费在线看成人av| 一本大道av一区二区在线播放| 精品国产电影一区二区| 亚洲一区二区欧美日韩| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲国产岛国毛片在线| 蜜臂av日日欢夜夜爽一区| 免费日韩伦理电影| 欧美性猛交xxxx乱大交退制版| 在线观看国产精品网站| 欧美日韩精品欧美日韩精品一| 欧美精品一卡二卡| 亚洲丰满少妇videoshd| k8久久久一区二区三区| 欧美国产欧美综合| 国产福利一区二区三区视频在线 | 国产人成亚洲第一网站在线播放 | av色综合久久天堂av综合| 精品国产一区二区三区久久影院| 亚洲高清免费一级二级三级| 91麻豆精品视频| 国产精品青草久久| 成人午夜大片免费观看| 中文字幕欧美三区| 丁香天五香天堂综合| 久久久久综合网| 国产成人在线看| 中文一区二区完整视频在线观看| 国产一区二区三区免费看| 99精品国产99久久久久久白柏 | 亚洲国产视频网站| 欧美视频完全免费看| 一区二区三区色| 欧美视频一区二区三区四区 | 五月天网站亚洲| 6080国产精品一区二区| 丝袜国产日韩另类美女| 国产成人精品一区二| 国产午夜亚洲精品午夜鲁丝片| 一区二区三区日韩在线观看| 欧美午夜精品免费| 美女一区二区三区在线观看| 日韩片之四级片| 国产一区二区在线看| 欧美激情在线观看视频免费| 91在线一区二区| 视频在线在亚洲| 欧美tickling挠脚心丨vk| 亚洲自拍偷拍九九九| 欧美日韩国产成人在线91| 黄色精品一二区| 欧美剧情电影在线观看完整版免费励志电影| 午夜日韩在线电影| 久久蜜臀精品av| 欧美在线免费播放| 国产中文字幕精品| 亚洲精品国产视频| av成人老司机| 日本午夜一本久久久综合| 国产精品久久久久一区二区三区 | 欧美二区乱c少妇| 国产麻豆精品在线观看| 亚洲欧美日韩国产手机在线| 欧美年轻男男videosbes| 国产盗摄一区二区| 午夜精品福利一区二区蜜股av | 日韩激情在线观看| 中文字幕精品一区二区精品绿巨人 | aa级大片欧美| 麻豆91免费观看| 洋洋av久久久久久久一区| 国产三级精品三级| 日韩一区二区在线观看| 在线视频综合导航| 成人激情电影免费在线观看| 蜜臀av国产精品久久久久| 亚洲欧美成aⅴ人在线观看| 精品国产91洋老外米糕| 欧美日韩精品一区二区三区| 91影院在线免费观看| 国产乱码一区二区三区| 视频一区二区欧美| 亚洲综合成人在线视频| 91在线观看污| 日本一区二区高清| 国产成人午夜精品影院观看视频 | 欧美电视剧免费观看| 国产中文字幕一区| 亚洲福利视频三区| 精品少妇一区二区三区视频免付费| 99久久久久久99| 国产精品 日产精品 欧美精品| 亚洲午夜电影在线观看| 国产精品成人免费精品自在线观看| 色先锋资源久久综合| 97久久精品人人做人人爽50路| 美日韩一级片在线观看| 日韩成人午夜电影| 亚洲精品乱码久久久久| 国产网站一区二区三区| 日韩精品一区二区三区视频在线观看 | 欧美美女网站色| 亚洲成a人在线观看| 国产欧美一区二区精品性| 337p亚洲精品色噜噜噜| 91在线一区二区| 欧洲色大大久久| 欧美性猛交xxxx乱大交退制版 | 亚洲影院在线观看| 中文字幕日韩av资源站| 国产欧美一区二区三区在线看蜜臀 | 国产老妇另类xxxxx| 看电视剧不卡顿的网站| 亚洲人成精品久久久久久| 夜夜操天天操亚洲| 亚洲激情男女视频| 一区二区三区 在线观看视频| 国产色综合久久| 最新久久zyz资源站| 亚洲天堂a在线| 亚洲男人的天堂在线aⅴ视频| 国产精品三级av在线播放| 亚洲图片另类小说| 亚洲一区二区四区蜜桃| 亚洲午夜成aⅴ人片| 婷婷六月综合亚洲| 成人一区二区视频| 成人免费的视频| 欧美综合一区二区| 91精品国产免费| 亚洲啪啪综合av一区二区三区| 一区二区三区在线免费播放| 怡红院av一区二区三区| 亚洲一区二区三区美女| 国产一区久久久| av色综合久久天堂av综合| 欧美性色黄大片手机版| 欧美精品自拍偷拍动漫精品| 久久久青草青青国产亚洲免观| 国产精品福利影院| 亚洲一区免费在线观看| 亚洲欧美视频一区| 亚洲色图欧洲色图婷婷| 亚洲国产精品尤物yw在线观看| 亚洲综合在线观看视频| 日韩激情视频网站| 成人午夜电影久久影院| 91成人免费网站| 欧美另类久久久品| 亚洲免费观看高清在线观看| 日韩国产精品大片| 91蜜桃网址入口| 日韩无一区二区|