日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

使用PyTorch从零开始构建Elman循环神经网络

發(fā)布時間:2024/8/23 循环神经网络 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用PyTorch从零开始构建Elman循环神经网络 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摘要: 循環(huán)神經網絡是如何工作的?如何構建一個Elman循環(huán)神經網絡?在這里,教你手把手創(chuàng)建一個Elman循環(huán)神經網絡進行簡單的序列預測。

本文以最簡單的RNNs模型為例:Elman循環(huán)神經網絡,講述循環(huán)神經網絡的工作原理,即便是你沒有太多循環(huán)神經網絡(RNNs)的基礎知識,也可以很容易的理解。為了讓你更好的理解RNNs,我們使用Pytorch張量包和autograd庫從頭開始構建Elman循環(huán)神經網絡。該文中完整代碼在Github上是可實現(xiàn)的。

在這里,假設你對前饋神經網絡略有了解。Pytorch和autograd庫更為詳細的內容請查看我的其他教程。

Elman循環(huán)神經網絡

Jeff Elman首次提出了Elman循環(huán)神經網絡,并發(fā)表在論文《Finding structure in time》中:它只是一個三層前饋神經網絡,輸入層由一個輸入神經元x1和一組上下文神經元單元{c1 … cn}組成。隱藏層前一時間步的神經元作為上下文神經元的輸入,在隱藏層中每個神經元都有一個上下文神經元。由于前一時間步的狀態(tài)作為輸入的一部分,因此我們可以說,Elman循環(huán)神經網絡擁有一定的內存——上下文神經元代表一個內存。

預測正弦波

現(xiàn)在,我們來訓練RNNs學習正弦函數。在訓練過程中,一次只為模型提供一個數據,這就是為什么我們只需要一個輸入神經元x1,并且我們希望在下一時間步預測該值。輸入序列x由20個數據組成,并且目標序列與輸入序列相同。

模型實現(xiàn)

首先導入包。

接下來,設置模型的超參數。設置輸入層的大小為7(6個上下文神經元和1個輸入神經元),seq_length用來定義輸入和目標序列的長度。

生成訓練數據:x是輸入序列,y是目標序列。

創(chuàng)建兩個權重矩陣。大小為(input_size,hidden_size)的矩陣w1用于隱藏連接的輸入,大小為(hidden_size,output_size)的矩陣w2用于隱藏連接的輸出。 用零均值的正態(tài)分布對權重矩陣進行初始化。

定義forward方法,其參數為input向量、context_state向量和兩個權重矩陣,連接input和context_state創(chuàng)建xh向量。對xh向量和權重矩陣w1執(zhí)行點積運算,然后用tanh函數作為非線性函數,在RNNs中tanh比sigmoid效果要好。 然后對新的context_state和權重矩陣w2再次執(zhí)行點積運算。 我們想要預測連續(xù)值,因此這個階段不使用任何非線性。

請注意,context_state向量將在下一時間步填充上下文神經元。 這就是為什么我們要返回context_state向量和out。

訓練

訓練循環(huán)的結構如下:

1.外循環(huán)遍歷每個epoch。epoch被定義為所有的訓練數據全部通過訓練網絡一次。在每個epoch開始時,將context_state向量初始化為0。

2.內部循環(huán)遍歷序列中的每個元素。執(zhí)行forward方法進行正向傳遞,該方法返回pred和context_state,將用于下一個時間步。然后計算均方誤差(MSE)用于預測連續(xù)值。執(zhí)行backward()方法計算梯度,然后更新權重w1和w2。每次迭代中調用zero_()方法清除梯度,否則梯度將會累計起來。最后將context_state向量包裝放到新變量中,以將其與歷史值分離開來。

訓練期間產生的輸出顯示了每個epoch的損失是如何減少的,這是一個好的衡量方式。損失的逐漸減少則意味著我們的模型正在學習。

預測

一旦模型訓練完畢,我們就可以進行預測。在序列的每一步我們只為模型提供一個數據,并要求模型在下一個步預測一個值。

預測結果如下圖所示:黃色圓點表示預測值,藍色圓點表示實際值,二者基本吻合,因此模型的預測效果非常好。

結論

在這里,我們使用了Pytorch從零開始構建一個基本的RNNs模型,并且學習了如何將RNNs應用于簡單的序列預測問題。

原文鏈接

干貨好文,請關注掃描以下二維碼:

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的使用PyTorch从零开始构建Elman循环神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。