<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
雙向RNN(Bidirectional RNN)的結構如下圖所示。
雙向的 RNN 是同時考慮“過去”和“未來”的資訊。上圖是一個序列長度為 4 的雙向RNN 結構。
雙向RNN就像是我們做閱讀理解的時候從頭向後讀一遍文章,然後又從後往前讀一遍文章,然後再做題。有可能從後往前再讀一遍文章的時候會有新的不一樣的理解,最後模型可能會得到更好的結果。
堆疊的雙向RNN(Stacked Bidirectional RNN)的結構如上圖所示。上圖是一個堆疊了3個隱藏層的RNN網路。
注意,這裡的堆疊的雙向RNN並不是只有雙向的RNN才可以堆疊,其實任意的RNN都可以堆疊,如SimpleRNN、LSTM和GRU這些迴圈神經網路也可以進行堆疊。
堆疊指的是在RNN的結構中疊加多層,類似於BP神經網路中可以疊加多層,增加網路的非線性。
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 # 載入資料集 mnist = tf.keras.datasets.mnist # 載入資料,資料載入的時候就已經劃分好訓練集和測試集 # 訓練集資料x_train的資料形狀為(60000,28,28) # 訓練集標籤y_train的資料形狀為(60000) # 測試集資料x_test的資料形狀為(10000,28,28) # 測試集標籤y_test的資料形狀為(10000) (x_train, y_train), (x_test, y_test) = mnist.load_data() # 對訓練集和測試集的資料進行歸一化處理,有助於提升模型訓練速度 x_train, x_test = x_train / 255.0, x_test / 255.0 # 把訓練集和測試集的標籤轉為獨熱編碼 y_train = tf.keras.utils.to_categorical(y_train,num_classes=10) y_test = tf.keras.utils.to_categorical(y_test,num_classes=10) # 資料大小-一行有28個畫素 input_size = 28 # 序列長度-一共有28行 time_steps = 28 # 隱藏層memory block個數 cell_size = 50 # 建立模型 # 迴圈神經網路的資料輸入必須是3維資料 # 資料格式為(資料數量,序列長度,資料大小) # 載入的mnist資料的格式剛好符合要求 # 注意這裡的input_shape設定模型資料輸入時不需要設定資料的數量 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個memory block輸出的50個值跟輸出層10個神經元全連線 Dense(10,activation=tf.keras.activations.softmax) ]) # 迴圈神經網路的資料輸入必須是3維資料 # 資料格式為(資料數量,序列長度,資料大小) # 載入的mnist資料的格式剛好符合要求 # 注意這裡的input_shape設定模型資料輸入時不需要設定資料的數量 # model.add(LSTM( # units = cell_size, # input_shape = (time_steps,input_size), # )) # 50個memory block輸出的50個值跟輸出層10個神經元全連線 # model.add(Dense(10,activation='softmax')) # 定義優化器 adam = Adam(lr=1e-3) # 定義優化器,loss function,訓練過程中計算準確率 使用交叉熵損失函數 model.compile(optimizer=adam,loss='categorical_crossentropy',metrics=['accuracy']) # 訓練模型 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()
這個可能對文字資料比較容易處理,這裡用這個模型有點勉強,只是簡單測試下。
模型摘要:
acc曲線:
loss曲線:
到此這篇關於Python實現雙向RNN與堆疊的雙向RNN的範例程式碼的文章就介紹到這了,更多相關Python 雙向RNN內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45