国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

機(jī)器學(xué)習(xí)入門(mén)--門(mén)控循環(huán)單元(GRU)原理與實(shí)踐

這篇具有很好參考價(jià)值的文章主要介紹了機(jī)器學(xué)習(xí)入門(mén)--門(mén)控循環(huán)單元(GRU)原理與實(shí)踐。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

GRU模型

隨著深度學(xué)習(xí)領(lǐng)域的快速發(fā)展,循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)已成為自然語(yǔ)言處理(NLP)等領(lǐng)域中常用的模型之一。但是,在RNN中,如果時(shí)間步數(shù)較大,會(huì)導(dǎo)致梯度消失或爆炸的問(wèn)題,這影響了模型的訓(xùn)練效果。為了解決這個(gè)問(wèn)題,研究人員提出了新的模型,其中GRU是其中的一種。

本文將介紹GRU的數(shù)學(xué)原理、代碼實(shí)現(xiàn),并通過(guò)pytorch和sklearn的數(shù)據(jù)集進(jìn)行試驗(yàn),最后對(duì)該模型進(jìn)行總結(jié)。

數(shù)學(xué)原理

GRU是一種門(mén)控循環(huán)單元(Gated Recurrent Unit)模型。與傳統(tǒng)的RNN相比,它具有更強(qiáng)的建模能力和更好的性能。

重置門(mén)和更新門(mén)

在GRU中,每個(gè)時(shí)間步有兩個(gè)狀態(tài):隱藏狀態(tài) h t h_t ht?和更新門(mén) r t r_t rt?。。更新門(mén)控制如何從先前的狀態(tài)中獲得信息,而隱藏狀態(tài)捕捉序列中的長(zhǎng)期依賴(lài)關(guān)系。

GRU的核心思想是使用“門(mén)”來(lái)控制信息的流動(dòng)。這些門(mén)是由sigmoid激活函數(shù)控制的,它們決定了哪些信息被保留和傳遞。
在每個(gè)時(shí)間步 t t t,GRU模型執(zhí)行以下操作:

1.計(jì)算重置門(mén)
r t = σ ( W r [ x t , h t ? 1 ] ) r_t = \sigma(W_r[x_t, h_{t-1}]) rt?=σ(Wr?[xt?,ht?1?])
其中, W r W_r Wr?是權(quán)重矩陣, σ \sigma σ表示sigmoid函數(shù)。重置門(mén) r t r_t rt?告訴模型是否要忽略先前的隱藏狀態(tài) h t ? 1 h_{t-1} ht?1?,并只依賴(lài)于當(dāng)前輸入
x t x_t xt?

2.計(jì)算更新門(mén)
z t = σ ( W z [ x t , h t ? 1 ] ) z_t = \sigma(W_z[x_t, h_{t-1}]) zt?=σ(Wz?[xt?,ht?1?])
其中,更新門(mén) z t z_t zt?告訴模型新的隱藏狀態(tài) h t h_t ht?在多大程度上應(yīng)該使用先前的狀態(tài) h t ? 1 h_{t-1} ht?1?。

候選隱藏狀態(tài)和隱藏狀態(tài)

在計(jì)算完重置門(mén)和更新門(mén)之后,我們可以計(jì)算候選隱藏狀態(tài) h ~ t \tilde{h}_{t} h~t?和隱藏狀態(tài) h t h_t ht?。

1.計(jì)算候選隱藏狀態(tài)
h ~ t = tanh ? ( W [ x t , r t ? h t ? 1 ] ) \tilde{h}_{t} = \tanh(W[x_t, r_t * h_{t-1}]) h~t?=tanh(W[xt?,rt??ht?1?])
其中, W W W是權(quán)重矩陣。候選隱藏狀態(tài) h ~ t \tilde{h}_{t} h~t?利用當(dāng)前輸入 x t x_t xt?和重置門(mén) r t r_t rt?來(lái)估計(jì)下一個(gè)可能的隱藏狀態(tài)。

2.計(jì)算隱藏狀態(tài)
h t = ( 1 ? z t ) ? h t ? 1 + z t ? h ~ t h_{t} = (1 - z_t) * h_{t-1} + z_t * \tilde{h}_{t} ht?=(1?zt?)?ht?1?+zt??h~t?
這是GRU的最終隱藏狀態(tài)公式。它在候選隱藏狀態(tài) h ~ t \tilde{h}_{t} h~t?和先前的隱藏狀態(tài) h t h_t ht?之間進(jìn)行加權(quán),其中權(quán)重由更新門(mén) z t z_t zt?控制。

代碼實(shí)現(xiàn)

下面是使用pytorch和sklearn的房?jī)r(jià)數(shù)據(jù)集實(shí)現(xiàn)GRU的示例代碼:

import torch
import torch.nn as nn
import torch.optim as optim
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

# 加載數(shù)據(jù)集并進(jìn)行標(biāo)準(zhǔn)化
data = load_boston()
X = data.data
y = data.target
scaler = StandardScaler()
X = scaler.fit_transform(X)
y = y.reshape(-1, 1)

# 轉(zhuǎn)換為張量
X = torch.tensor(X, dtype=torch.float32).unsqueeze(1)
y = torch.tensor(y, dtype=torch.float32)

# 定義GRU模型
class GRUNet(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(GRUNet, self).__init__()
        self.hidden_size = hidden_size
        self.gru = nn.GRU(input_size, hidden_size, batch_first=True)
        self.fc = nn.Linear(hidden_size, output_size)

    def forward(self, x):
        out, _ = self.gru(x)
        out = self.fc(out[:, -1, :])
        return out

input_size = X.shape[2]
hidden_size = 32
output_size = 1
model = GRUNet(input_size, hidden_size, output_size)

# 定義損失函數(shù)和優(yōu)化器
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

# 訓(xùn)練模型
num_epochs = 10000
loss_list = []
for epoch in range(num_epochs):
    optimizer.zero_grad()
    outputs = model(X)
    loss = criterion(outputs, y)
    loss.backward()
    optimizer.step()

    if (epoch+1) % 100 == 0:
        loss_list.append(loss.item())
        print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item()}')

# 可視化損失曲線
plt.plot(range(100), loss_list)
plt.xlabel('num_epochs')
plt.ylabel('loss of GRU Training')
plt.show()

# 預(yù)測(cè)新數(shù)據(jù)
new_data_point = X[0].reshape(1, 1, -1)
prediction = model(new_data_point)
print(f'Predicted value: {prediction.item()}')

上述代碼首先加載并標(biāo)準(zhǔn)化房?jī)r(jià)數(shù)據(jù)集,然后定義了一個(gè)包含GRU層和全連接層的GRUNet模型,并使用均方誤差作為損失函數(shù)和Adam優(yōu)化器進(jìn)行訓(xùn)練。訓(xùn)練完成后,使用matplotlib庫(kù)繪制損失曲線(如下圖所示),并使用訓(xùn)練好的模型對(duì)新的數(shù)據(jù)點(diǎn)進(jìn)行預(yù)測(cè)。
機(jī)器學(xué)習(xí)入門(mén)--門(mén)控循環(huán)單元(GRU)原理與實(shí)踐,機(jī)器學(xué)習(xí)入門(mén),機(jī)器學(xué)習(xí),gru,人工智能

總結(jié)

GRU是一種門(mén)控循環(huán)單元模型,它通過(guò)更新門(mén)和重置門(mén),有效地解決了梯度消失或爆炸的問(wèn)題。在本文中,我們介紹了GRU的數(shù)學(xué)原理、代碼實(shí)現(xiàn)和代碼解釋?zhuān)⑼ㄟ^(guò)pytorch和sklearn的房?jī)r(jià)數(shù)據(jù)集進(jìn)行了試驗(yàn)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-828991.html

到了這里,關(guān)于機(jī)器學(xué)習(xí)入門(mén)--門(mén)控循環(huán)單元(GRU)原理與實(shí)踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)和門(mén)控循環(huán)單元(GRU)】

    長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)和門(mén)控循環(huán)單元(GRU)都是為了解決傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)在處理長(zhǎng)序列數(shù)據(jù)時(shí)遇到的梯度消失問(wèn)題而設(shè)計(jì)的。它們通過(guò)引入門(mén)控機(jī)制,有效地保持長(zhǎng)期依賴(lài)信息,同時(shí)避免了梯度在時(shí)間反向傳播過(guò)程中消失的問(wèn)題。 LSTM通過(guò)使用三個(gè)門(mén)(輸入門(mén)、遺

    2024年04月09日
    瀏覽(23)
  • 故障診斷模型 | Maltab實(shí)現(xiàn)GRU門(mén)控循環(huán)單元故障診斷

    故障診斷模型 | Maltab實(shí)現(xiàn)GRU門(mén)控循環(huán)單元故障診斷

    故障診斷模型 | Maltab實(shí)現(xiàn)GRU門(mén)控循環(huán)單元故障診斷 利用各種檢查和測(cè)試方法,發(fā)現(xiàn)系統(tǒng)和設(shè)備是否存在故障的過(guò)程是故障檢測(cè);而進(jìn)一步確定故障所在大致部位的過(guò)程是故障定位。故障檢測(cè)和故障定位同屬網(wǎng)絡(luò)生存性范疇。要求把故障定位到實(shí)施修理時(shí)可更換的產(chǎn)品層次(可

    2024年02月08日
    瀏覽(29)
  • 回歸預(yù)測(cè) | MATLAB實(shí)現(xiàn)GRU門(mén)控循環(huán)單元多輸入多輸出

    回歸預(yù)測(cè) | MATLAB實(shí)現(xiàn)GRU門(mén)控循環(huán)單元多輸入多輸出

    預(yù)測(cè)效果 基本介紹 MATLAB實(shí)現(xiàn)GRU門(mén)控循環(huán)單元多輸入多輸出,數(shù)據(jù)為多輸入多輸出預(yù)測(cè)數(shù)據(jù),輸入10個(gè)特征,輸出3個(gè)變量,程序亂碼是由于版本不一致導(dǎo)致,可以用記事本打開(kāi)復(fù)制到你的文件,運(yùn)行環(huán)境MATLAB2020b及以上。命令窗口輸出MAE和R2,可在下載區(qū)獲取數(shù)據(jù)和程序內(nèi)容。

    2024年02月12日
    瀏覽(22)
  • GRU門(mén)控循環(huán)單元神經(jīng)網(wǎng)絡(luò)的MATLAB實(shí)現(xiàn)(含源代碼)

    GRU門(mén)控循環(huán)單元神經(jīng)網(wǎng)絡(luò)的MATLAB實(shí)現(xiàn)(含源代碼)

    在深度學(xué)習(xí)領(lǐng)域,循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)因其在處理序列數(shù)據(jù)方面的卓越能力而受到廣泛關(guān)注。GRU(門(mén)控循環(huán)單元)作為RNN的一種變體,以其在捕捉時(shí)間序列長(zhǎng)距離依賴(lài)關(guān)系方面的高效性而備受推崇。在本文中,我們將探討如何在MATLAB環(huán)境中實(shí)現(xiàn)GRU網(wǎng)絡(luò),以及該實(shí)現(xiàn)在處理各類(lèi)

    2024年01月21日
    瀏覽(29)
  • 分類(lèi)預(yù)測(cè) | MATLAB實(shí)現(xiàn)PCA-GRU(主成分門(mén)控循環(huán)單元)分類(lèi)預(yù)測(cè)

    分類(lèi)預(yù)測(cè) | MATLAB實(shí)現(xiàn)PCA-GRU(主成分門(mén)控循環(huán)單元)分類(lèi)預(yù)測(cè)

    預(yù)測(cè)效果 基本介紹 Matlab實(shí)現(xiàn)基于PCA-GRU主成分分析-門(mén)控循環(huán)單元多輸入分類(lèi)預(yù)測(cè)(完整程序和數(shù)據(jù)) Matlab實(shí)現(xiàn)基于PCA-GRU主成分分析-門(mén)控循環(huán)單元多輸入分類(lèi)預(yù)測(cè)(完整程序和數(shù)據(jù)) 基于主成分分析-門(mén)控循環(huán)單元分類(lèi)預(yù)測(cè),PCA-GRU分類(lèi)預(yù)測(cè),多輸入分類(lèi)預(yù)測(cè)(Matlab完整程序和

    2024年02月09日
    瀏覽(22)
  • 時(shí)序預(yù)測(cè) | MATLAB實(shí)現(xiàn)TCN-GRU時(shí)間卷積門(mén)控循環(huán)單元時(shí)間序列預(yù)測(cè)

    時(shí)序預(yù)測(cè) | MATLAB實(shí)現(xiàn)TCN-GRU時(shí)間卷積門(mén)控循環(huán)單元時(shí)間序列預(yù)測(cè)

    預(yù)測(cè)效果 基本介紹 1.MATLAB實(shí)現(xiàn)TCN-GRU時(shí)間卷積門(mén)控循環(huán)單元時(shí)間序列預(yù)測(cè); 2.運(yùn)行環(huán)境為Matlab2021b; 3.單變量時(shí)間序列預(yù)測(cè); 4.data為數(shù)據(jù)集,excel數(shù)據(jù),單變量時(shí)間序列,MainTCN_GRUTS.m為主程序,運(yùn)行即可,所有文件放在一個(gè)文件夾; 5.命令窗口輸出R2、MSE、RMSE、MAE、MAPE多指標(biāo)評(píng)

    2024年02月09日
    瀏覽(17)
  • 回歸預(yù)測(cè) | MATLAB實(shí)現(xiàn)GRU(門(mén)控循環(huán)單元)多輸入單輸出(不調(diào)用工具箱函數(shù))

    回歸預(yù)測(cè) | MATLAB實(shí)現(xiàn)GRU(門(mén)控循環(huán)單元)多輸入單輸出(不調(diào)用工具箱函數(shù))

    預(yù)測(cè)效果 基本介紹 GRU神經(jīng)網(wǎng)絡(luò)是LSTM神經(jīng)網(wǎng)絡(luò)的一種變體,LSTM 神經(jīng)網(wǎng) 絡(luò)是在RNN的基礎(chǔ)上發(fā)展起來(lái)的。RNN是一種成熟的機(jī)器學(xué)習(xí)方法,在處理時(shí)序數(shù)列方面具有著很大優(yōu)勢(shì)。RNN中包含信號(hào)反饋結(jié)構(gòu),能將t時(shí)刻的輸出信息與t時(shí)刻之前的信息相關(guān)聯(lián),具有動(dòng)態(tài)特征和記憶功能。

    2024年02月16日
    瀏覽(21)
  • 時(shí)序預(yù)測(cè) | MATLAB實(shí)現(xiàn)WOA-GRU鯨魚(yú)算法優(yōu)化門(mén)控循環(huán)單元時(shí)間序列預(yù)測(cè)

    時(shí)序預(yù)測(cè) | MATLAB實(shí)現(xiàn)WOA-GRU鯨魚(yú)算法優(yōu)化門(mén)控循環(huán)單元時(shí)間序列預(yù)測(cè)

    預(yù)測(cè)效果 基本介紹 MATLAB實(shí)現(xiàn)WOA-GRU鯨魚(yú)算法優(yōu)化門(mén)控循環(huán)單元時(shí)間序列預(yù)測(cè) 基于鯨魚(yú)算法優(yōu)化門(mén)控循環(huán)單元(WOA-GRU)的時(shí)間序列預(yù)測(cè)。 優(yōu)化參數(shù)為學(xué)習(xí)率,隱藏層節(jié)點(diǎn)個(gè)數(shù),正則化參數(shù),要求2020b及以上版本,matlab代碼。 評(píng)價(jià)指標(biāo)包括:MAE、MSE、RMSE等,代碼質(zhì)量極高,方便學(xué)習(xí)

    2023年04月27日
    瀏覽(27)
  • 時(shí)序預(yù)測(cè) | MATLAB實(shí)現(xiàn)PSO-GRU(粒子群優(yōu)化門(mén)控循環(huán)單元)時(shí)間序列預(yù)測(cè)

    時(shí)序預(yù)測(cè) | MATLAB實(shí)現(xiàn)PSO-GRU(粒子群優(yōu)化門(mén)控循環(huán)單元)時(shí)間序列預(yù)測(cè)

    預(yù)測(cè)效果 基本介紹 Matlab基于PSO-GRU粒子群算法優(yōu)化門(mén)控循環(huán)單元的時(shí)間序列預(yù)測(cè)(完整程序和數(shù)據(jù)) Matlab基于PSO-GRU粒子群算法優(yōu)化門(mén)控循環(huán)單元的時(shí)間序列預(yù)測(cè),PSO-GRU時(shí)間序列預(yù)測(cè)(完整程序和數(shù)據(jù)) 優(yōu)化參數(shù)為學(xué)習(xí)率,隱藏層節(jié)點(diǎn)個(gè)數(shù),正則化參數(shù),要求2020b及以上版本,

    2024年02月11日
    瀏覽(27)
  • 時(shí)序預(yù)測(cè) | MATLAB實(shí)現(xiàn)BO-GRU貝葉斯優(yōu)化門(mén)控循環(huán)單元時(shí)間序列預(yù)測(cè)

    時(shí)序預(yù)測(cè) | MATLAB實(shí)現(xiàn)BO-GRU貝葉斯優(yōu)化門(mén)控循環(huán)單元時(shí)間序列預(yù)測(cè)

    效果一覽 基本介紹 MATLAB實(shí)現(xiàn)BO-GRU貝葉斯優(yōu)化門(mén)控循環(huán)單元時(shí)間序列預(yù)測(cè)?;谪惾~斯(bayes)優(yōu)化門(mén)控循環(huán)單元的時(shí)間序列預(yù)測(cè),BO-GRU/Bayes-GRU時(shí)間序列預(yù)測(cè)模型。 1.優(yōu)化參數(shù)為:學(xué)習(xí)率,隱含層節(jié)點(diǎn),正則化參數(shù)。 2.評(píng)價(jià)指標(biāo)包括:R2、MAE、MSE、RMSE和MAPE等。 3.運(yùn)行環(huán)境matlab202

    2024年02月13日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包