最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

雙向RNN:bidirectional_dynamic_rnn()函數(shù)的使用詳解

 更新時(shí)間:2020年01月20日 16:48:32   作者:Cerisier  
今天小編就為大家分享一篇雙向RNN:bidirectional_dynamic_rnn()函數(shù)的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

雙向RNN:bidirectional_dynamic_rnn()函數(shù)的使用詳解

先說(shuō)下為什么要使用到雙向RNN,在讀一篇文章的時(shí)候,上文提到的信息十分的重要,但這些信息是不足以捕捉文章信息的,下文隱含的信息同樣會(huì)對(duì)該時(shí)刻的語(yǔ)義產(chǎn)生影響。

舉一個(gè)不太恰當(dāng)?shù)睦?,某次工作?huì)議上,領(lǐng)導(dǎo)進(jìn)行“簡(jiǎn)潔地”總結(jié),他會(huì)在第一句告訴你:“下面,為了節(jié)約時(shí)間,我簡(jiǎn)單地說(shuō)兩點(diǎn)…”,(…此處略去五百字…),“首先,….”,(…此處略去一萬(wàn)字…),“礙于時(shí)間的關(guān)系,我要加快速度了,下面我簡(jiǎn)要說(shuō)下第二點(diǎn)…”(…此處再次略去五千字…)“好的,我想說(shuō)的大概就是這些”(…此處又略去了二百字…),“謝謝大家!”如果將這篇發(fā)言交給一個(gè)單層的RNN網(wǎng)絡(luò)去學(xué)習(xí),因?yàn)椤笆紫取焙汀暗诙c(diǎn)”中間隔得實(shí)在太久,等到開(kāi)始學(xué)習(xí)“第二點(diǎn)”時(shí),網(wǎng)絡(luò)已經(jīng)忘記了“簡(jiǎn)單地說(shuō)兩點(diǎn)”這個(gè)重要的信息,最終的結(jié)果就只剩下在風(fēng)中凌亂了。。。于是我們決定加一個(gè)反向的網(wǎng)絡(luò),從后開(kāi)始往前聽(tīng),對(duì)于這層網(wǎng)絡(luò),他首先聽(tīng)到的就是“第二點(diǎn)”,然后是“首先”,最后,他對(duì)比了一下果然僅僅是“簡(jiǎn)要地兩點(diǎn)”,在于前向的網(wǎng)絡(luò)進(jìn)行結(jié)合,就深入學(xué)習(xí)了領(lǐng)導(dǎo)的指導(dǎo)精神。

上圖是一個(gè)雙向LSTM的結(jié)構(gòu)圖,對(duì)于最后輸出的每個(gè)隱藏狀態(tài) 都是前向網(wǎng)絡(luò)和后向網(wǎng)絡(luò)的元組,即 其中每一個(gè) 或者 又是一個(gè)由隱藏狀態(tài)和細(xì)胞狀態(tài)組成的元組(或者是concat)。同樣最終的output也是需要將前向和后向的輸出concat起來(lái)的,這樣就保證了在最終時(shí)刻,無(wú)論是輸出還是隱藏狀態(tài)都是有考慮了上文和下文信息的。

下面就來(lái)看下tensorflow中已經(jīng)集成的 tf.nn.bidirectional_dynamic_rnn() 函數(shù)。似乎雙向的暫時(shí)只有這一個(gè)動(dòng)態(tài)的RNN方法,不過(guò)想想也能理解,這種結(jié)構(gòu)暫時(shí)也只會(huì)在encoder端出現(xiàn),無(wú)論你的輸入是pad到了定長(zhǎng)或者是不定長(zhǎng)的,動(dòng)態(tài)RNN都是可以處理的。

具體的定義如下:

tf.nn.bidirectional_dynamic_rnn(
 cell_fw,
 cell_bw,
 inputs,
 sequence_length=None,
 initial_state_fw=None,
 initial_state_bw=None,
 dtype=None,
 parallel_iterations=None,
 swap_memory=False,
 time_major=False,
 scope=None
)

仔細(xì)看這個(gè)方法似乎和dynamic_rnn()沒(méi)有太大區(qū)別,無(wú)非是多加了一個(gè)bw的部分,事實(shí)上也的確如此。先看下前向傳播的部分:

with vs.variable_scope(scope or "bidirectional_rnn"):
 # Forward direction
 with vs.variable_scope("fw") as fw_scope:
  output_fw, output_state_fw = dynamic_rnn(
    cell=cell_fw, inputs=inputs, 
    sequence_length=sequence_length,
    initial_state=initial_state_fw, 
    dtype=dtype,
    parallel_iterations=parallel_iterations, 
    swap_memory=swap_memory,
    scope=fw_scope)

完全就是一個(gè)dynamic_rnn(),至于你選擇LSTM或者GRU,只是cell的定義不同罷了。而雙向RNN的核心就在于反向的bw部分。剛才說(shuō)過(guò),反向部分就是從后往前讀,而這個(gè)翻轉(zhuǎn)的部分,就要用到一個(gè)reverse_sequence()的方法,來(lái)看一下這一部分:

with vs.variable_scope("bw") as bw_scope:
 # ———————————— 此處是重點(diǎn) ———————————— 
 inputs_reverse = _reverse(
   inputs, seq_lengths=sequence_length,
   seq_dim=time_dim, batch_dim=batch_dim)
 # ————————————————————————————————————
 tmp, output_state_bw = dynamic_rnn(
   cell=cell_bw, 
   inputs=inputs_reverse, 
   sequence_length=sequence_length,
   initial_state=initial_state_bw, 
   dtype=dtype,
   parallel_iterations=parallel_iterations,
   swap_memory=swap_memory,
   time_major=time_major, 
   scope=bw_scope)

我們可以看到,這里的輸入不再是inputs,而是一個(gè)inputs_reverse,根據(jù)time_major的取值,time_dim和batch_dim組合的 {0,1} 取值正好相反,也就對(duì)應(yīng)了時(shí)間維和批量維的詞序關(guān)系。

而最終的輸出:

outputs = (output_fw, output_bw)
output_states = (output_state_fw, output_state_bw)

這里還有最后的一個(gè)小問(wèn)題,output_states是一個(gè)元組的元組,我個(gè)人的處理方法是用c_fw,h_fw = output_state_fw和c_bw,h_bw = output_state_bw,最后再分別將c和h狀態(tài)concat起來(lái),用tf.contrib.rnn.LSTMStateTuple()函數(shù)生成decoder端的初始狀態(tài)。

以上這篇雙向RNN:bidirectional_dynamic_rnn()函數(shù)的使用詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • tensorflow 重置/清除計(jì)算圖的實(shí)現(xiàn)

    tensorflow 重置/清除計(jì)算圖的實(shí)現(xiàn)

    今天小編就為大家分享一篇tensorflow 重置/清除計(jì)算圖的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 實(shí)現(xiàn)?Python?腳本生成命令行

    實(shí)現(xiàn)?Python?腳本生成命令行

    這篇文章主要介紹了實(shí)現(xiàn)?Python?腳本生成命令行,文章通過(guò)定義一個(gè)?scrape?方法展開(kāi)詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • 解決pytorch 交叉熵?fù)p失輸出為負(fù)數(shù)的問(wèn)題

    解決pytorch 交叉熵?fù)p失輸出為負(fù)數(shù)的問(wèn)題

    這篇文章主要介紹了解決pytorch 交叉熵?fù)p失輸出為負(fù)數(shù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • Python制作一個(gè)系統(tǒng)信息采集工具

    Python制作一個(gè)系統(tǒng)信息采集工具

    這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫(xiě)一個(gè)系統(tǒng)信息采集工具,好為重裝系統(tǒng)做準(zhǔn)備,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • python爬取Ajax動(dòng)態(tài)加載網(wǎng)頁(yè)過(guò)程解析

    python爬取Ajax動(dòng)態(tài)加載網(wǎng)頁(yè)過(guò)程解析

    這篇文章主要介紹了python爬取Ajax動(dòng)態(tài)加載網(wǎng)頁(yè)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 一些Python?5行代碼的神奇操作匯總

    一些Python?5行代碼的神奇操作匯總

    最開(kāi)始學(xué)習(xí)?Python,不需要太過(guò)復(fù)雜,下面這篇文章主要給大家介紹了關(guān)于Python?5行代碼的神奇操作,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 使用python爬取抖音app視頻的實(shí)例代碼

    使用python爬取抖音app視頻的實(shí)例代碼

    這篇文章主要介紹了使用python爬取抖音app視頻的實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • python opencv根據(jù)顏色進(jìn)行目標(biāo)檢測(cè)的方法示例

    python opencv根據(jù)顏色進(jìn)行目標(biāo)檢測(cè)的方法示例

    這篇文章主要介紹了python opencv根據(jù)顏色進(jìn)行目標(biāo)檢測(cè)的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Python?munch包?/Munch()?的用法詳解

    Python?munch包?/Munch()?的用法詳解

    這篇文章主要介紹了Python?munch包?/Munch()?的用法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • 對(duì)python 合并 累加兩個(gè)dict的實(shí)例詳解

    對(duì)python 合并 累加兩個(gè)dict的實(shí)例詳解

    今天小編就為大家分享一篇對(duì)python 合并 累加兩個(gè)dict的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01

最新評(píng)論

芜湖市| 莎车县| 新乡市| 海安县| 明光市| 福清市| 本溪| 伊宁市| 潮安县| 冀州市| 西充县| 安远县| 财经| 宜兰市| 衡山县| 惠水县| 黔东| 阳原县| 东阿县| 疏勒县| 墨江| 和平区| 盘锦市| 邢台市| 靖远县| 莲花县| 永清县| 九龙坡区| 诸暨市| 丹江口市| 禄丰县| 龙口市| 庄河市| 韶关市| 静宁县| 苏尼特右旗| 老河口市| 天门市| 二连浩特市| 湖州市| 清原|