成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python實(shí)現(xiàn)雙向RNN與堆疊的雙向RNN的示例代碼

89542767 / 740人閱讀

  小編寫這篇文章的一個(gè)主要目的,主要是給大家做一個(gè)詳細(xì)的介紹,介紹的內(nèi)容主要是利用Python知識(shí),利用Python去實(shí)現(xiàn)RNN與堆疊的RNN,具體的實(shí)例代碼,下面就給大家詳細(xì)的去做一個(gè)解答。


  1、雙向RNN


  雙向RNN(Bidirectional RNN)的結(jié)構(gòu)如下圖所示。

01.png

02.png

  03.png

04.png

      雙向的RNN是同時(shí)考慮“過去”和“未來”的信息。上圖是一個(gè)序列長度為4的雙向RNN結(jié)構(gòu)。


  雙向RNN就像是我們做閱讀理解的時(shí)候從頭向后讀一遍文章,然后又從后往前讀一遍文章,然后再做題。有可能從后往前再讀一遍文章的時(shí)候會(huì)有新的不一樣的理解,最后模型可能會(huì)得到更好的結(jié)果。


  2、堆疊的雙向RNN

05.png

  堆疊的雙向RNN(Stacked Bidirectional RNN)的結(jié)構(gòu)如上圖所示。上圖是一個(gè)堆疊了3個(gè)隱藏層的RNN網(wǎng)絡(luò)。

06.png

  注意,這里的堆疊的雙向RNN并不是只有雙向的RNN才可以堆疊,其實(shí)任意的RNN都可以堆疊,如SimpleRNN、LSTM和GRU這些循環(huán)神經(jīng)網(wǎng)絡(luò)也可以進(jìn)行堆疊。


  堆疊指的是在RNN的結(jié)構(gòu)中疊加多層,類似于BP神經(jīng)網(wǎng)絡(luò)中可以疊加多層,增加網(wǎng)絡(luò)的非線性。


  3、雙向LSTM實(shí)現(xiàn)MNIST數(shù)據(jù)集分類


  import tensorflow as tf
  from tensorflow.keras.models import Sequential
  from tensorflow.keras.layers import Dense
  from tensorflow.keras.layers import LSTM,Dropout,Bidirectional
  from tensorflow.keras.optimizers import Adam
  import matplotlib.pyplot as plt
  #載入數(shù)據(jù)集
  mnist=tf.keras.datasets.mnist
  #載入數(shù)據(jù),數(shù)據(jù)載入的時(shí)候就已經(jīng)劃分好訓(xùn)練集和測(cè)試集
  #訓(xùn)練集數(shù)據(jù)x_train的數(shù)據(jù)形狀為(60000,28,28)
  #訓(xùn)練集標(biāo)簽y_train的數(shù)據(jù)形狀為(60000)
  #測(cè)試集數(shù)據(jù)x_test的數(shù)據(jù)形狀為(10000,28,28)
  #測(cè)試集標(biāo)簽y_test的數(shù)據(jù)形狀為(10000)
  (x_train,y_train),(x_test,y_test)=mnist.load_data()
  #對(duì)訓(xùn)練集和測(cè)試集的數(shù)據(jù)進(jìn)行歸一化處理,有助于提升模型訓(xùn)練速度
  x_train,x_test=x_train/255.0,x_test/255.0
  #把訓(xùn)練集和測(cè)試集的標(biāo)簽轉(zhuǎn)為獨(dú)熱編碼
  y_train=tf.keras.utils.to_categorical(y_train,num_classes=10)
  y_test=tf.keras.utils.to_categorical(y_test,num_classes=10)
  #數(shù)據(jù)大小-一行有28個(gè)像素
  input_size=28
  #序列長度-一共有28行
  time_steps=28
  #隱藏層memory block個(gè)數(shù)
  cell_size=50
  #創(chuàng)建模型
  #循環(huán)神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)輸入必須是3維數(shù)據(jù)
  #數(shù)據(jù)格式為(數(shù)據(jù)數(shù)量,序列長度,數(shù)據(jù)大小)
  #載入的mnist數(shù)據(jù)的格式剛好符合要求
  #注意這里的input_shape設(shè)置模型數(shù)據(jù)輸入時(shí)不需要設(shè)置數(shù)據(jù)的數(shù)量
  model=Sequential([
  Bidirectional(LSTM(units=cell_size,input_shape=(time_steps,input_size),return_sequences=True)),
  Dropout(0.2),
  Bidirectional(LSTM(cell_size)),
  Dropout(0.2),
  #50個(gè)memory block輸出的50個(gè)值跟輸出層10個(gè)神經(jīng)元全連接
  Dense(10,activation=tf.keras.activations.softmax)
  ])
  #循環(huán)神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)輸入必須是3維數(shù)據(jù)
  #數(shù)據(jù)格式為(數(shù)據(jù)數(shù)量,序列長度,數(shù)據(jù)大小)
  #載入的mnist數(shù)據(jù)的格式剛好符合要求
  #注意這里的input_shape設(shè)置模型數(shù)據(jù)輸入時(shí)不需要設(shè)置數(shù)據(jù)的數(shù)量
  #model.add(LSTM(
  #units=cell_size,
  #input_shape=(time_steps,input_size),
  #))
  #50個(gè)memory block輸出的50個(gè)值跟輸出層10個(gè)神經(jīng)元全連接
  #model.add(Dense(10,activation='softmax'))
  #定義優(yōu)化器
  adam=Adam(lr=1e-3)
  #定義優(yōu)化器,loss function,訓(xùn)練過程中計(jì)算準(zhǔn)確率使用交叉熵?fù)p失函數(shù)
  model.compile(optimizer=adam,loss='categorical_crossentropy',metrics=['accuracy'])
  #訓(xùn)練模型
  history=model.fit(x_train,y_train,batch_size=64,epochs=10,validation_data=(x_test,y_test))
  #打印模型摘要
  model.summary()
  loss=history.history['loss']
  val_loss=history.history['val_loss']
  accuracy=history.history['accuracy']
  val_accuracy=history.history['val_accuracy']
  #繪制loss曲線
  plt.plot(loss,label='Training Loss')
  plt.plot(val_loss,label='Validation Loss')
  plt.title('Training and Validation Loss')
  plt.legend()
  plt.show()
  #繪制acc曲線
  plt.plot(accuracy,label='Training accuracy')
  plt.plot(val_accuracy,label='Validation accuracy')
  plt.title('Training and Validation Loss')
  plt.legend()
  plt.show()


  這個(gè)可能對(duì)文本數(shù)據(jù)比較容易處理,這里用這個(gè)模型有點(diǎn)勉強(qiáng),只是簡單測(cè)試下。


  模型摘要:

07.png

  acc曲線:

08.png

  loss曲線:

09.png

10.png

  到此為止,這篇文章就給大家介紹完畢了,希望可以給大家?guī)韼椭?/p>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/128394.html

相關(guān)文章

  • 深度學(xué)習(xí)解決機(jī)器閱讀理解任務(wù)研究進(jìn)展

    摘要:深度學(xué)習(xí)近年來在中廣泛使用,在機(jī)器閱讀理解領(lǐng)域也是如此,深度學(xué)習(xí)技術(shù)的引入使得機(jī)器閱讀理解能力在最近一年內(nèi)有了大幅提高,本文對(duì)深度學(xué)習(xí)在機(jī)器閱讀理解領(lǐng)域的技術(shù)應(yīng)用及其進(jìn)展進(jìn)行了歸納梳理。目前的各種閱讀理解任務(wù)中完形填空式任務(wù)是最常見的類型。 關(guān)于閱讀理解,相信大家都不陌生,我們接受的傳統(tǒng)語文教育中閱讀理解是非常常規(guī)的考試內(nèi)容,一般形式就是給你一篇文章,然后針對(duì)這些文章提出一些問題,學(xué)生回答這...

    flybywind 評(píng)論0 收藏0
  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)

    摘要:要學(xué)習(xí)深度學(xué)習(xí),那么首先要熟悉神經(jīng)網(wǎng)絡(luò),簡稱的一些基本概念。網(wǎng)絡(luò)徑向基函數(shù)網(wǎng)絡(luò)是一種單隱層前饋神經(jīng)網(wǎng)絡(luò),它使用徑向基函數(shù)作為隱層神經(jīng)元激活函數(shù),而輸出層則是對(duì)隱層神經(jīng)元輸出的線性組合。 閱讀目錄1. 神經(jīng)元模型2. 感知機(jī)和神經(jīng)網(wǎng)絡(luò)3. 誤差逆?zhèn)鞑ニ惴?. 常見的神經(jīng)網(wǎng)絡(luò)模型5. 深度學(xué)習(xí)6. 參考內(nèi)容目前,深度學(xué)習(xí)(Deep Learning,簡稱DL)在算法領(lǐng)域可謂是大紅大紫,現(xiàn)在不只是...

    starsfun 評(píng)論0 收藏0
  • 神經(jīng)網(wǎng)絡(luò)

    摘要:通過將神經(jīng)元的值設(shè)置為希望的模式來訓(xùn)練網(wǎng)絡(luò),之后可以計(jì)算權(quán)重。輸入神經(jīng)元在完整網(wǎng)絡(luò)更新結(jié)束時(shí)變成輸出神經(jīng)元。在某種程度上,這類似于峰值神經(jīng)網(wǎng)絡(luò),并不是所有的神經(jīng)元始終都在發(fā)射并且點(diǎn)的生物合理性得分。 隨著新的神經(jīng)網(wǎng)絡(luò)架構(gòu)不時(shí)出現(xiàn),很難跟蹤這些架構(gòu)。知道所有縮寫(DCIGN,BiLSTM,DCGAN,任何人?)起初可能有點(diǎn)壓倒性。 所以我決定編寫一個(gè)包含許多這些體系結(jié)構(gòu)的備忘單。這些大多...

    Anonymous1 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<