如何進(jìn)行RNN總結(jié)及sin與cos擬合應(yīng)用

如何進(jìn)行RNN總結(jié)及sin與cos擬合應(yīng)用,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)專注于鎮(zhèn)巴網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供鎮(zhèn)巴營銷型網(wǎng)站建設(shè),鎮(zhèn)巴網(wǎng)站制作、鎮(zhèn)巴網(wǎng)頁設(shè)計、鎮(zhèn)巴網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造鎮(zhèn)巴網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供鎮(zhèn)巴網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

一、RNN總結(jié)

    一個簡單的RNN模型由輸入層,一個隱藏層,一個輸出層組成。

如何進(jìn)行RNN總結(jié)及sin與cos擬合應(yīng)用

我們給出這個抽象圖對應(yīng)的具體圖,能夠很清楚的看到,上一時刻的隱藏層是如何影響當(dāng)前時刻的隱藏層的。

如何進(jìn)行RNN總結(jié)及sin與cos擬合應(yīng)用

基于RNN還可以繼續(xù)擴(kuò)展到雙向循環(huán)神經(jīng)網(wǎng)絡(luò),深度循環(huán)神經(jīng)網(wǎng)絡(luò)。RNN公式如下:如何進(jìn)行RNN總結(jié)及sin與cos擬合應(yīng)用

                                                     如何進(jìn)行RNN總結(jié)及sin與cos擬合應(yīng)用                                   

定義RNN類,代碼如下:

from torch import nn

class RNN(nn.Module):
    def __init__(self):
        super(RNN, self).__init__()

        self.rnn = nn.RNN(
            input_size=INPUT_SIZE, # The number of expected features in the input `x`
            hidden_size=32, # The number of features in the hidden state `h`
            num_layers=1, # Number of recurrent layers
            batch_first=True # batch維度是否在前,If ``True``, tensors as `(batch, seq, feature)`
        )
        self.out = nn.Linear(32, 1) # 線性變換

    def forward(self, x, h_state):
        out, h_state = self.rnn(x, h_state)
        return out, h_state

Tips: 1. RNN的訓(xùn)練算法是BPTT,它的基本原理核BP算法一致,包含同樣的三個步驟:1) 前向計算每個神經(jīng)元的輸出值;2)反向計算每個神經(jīng)元的誤差項?_j值,它是誤差函數(shù)E對神經(jīng)元j的加權(quán)輸出net_j的偏導(dǎo)數(shù);3)計算每個權(quán)重的梯度。

2. RNN的梯度消失核爆炸,根據(jù)公式的指數(shù)形式,β大于或小于1都將造成梯度消失核爆炸問題。如何進(jìn)行RNN總結(jié)及sin與cos擬合應(yīng)用

如何避免:1) 梯度爆炸:設(shè)置一個梯度閾值,當(dāng)梯度超過這個閾值的時候可以直接截取 (Gradient Clipping(pytorch  nn.utils.clip_grad_norm )) ;好的參數(shù)初始化方式,如He初始化; 非飽和的激活函數(shù)(如 ReLU) ; 批量規(guī)范化(Batch Normalization); LSTM 。2)梯度消失:改進(jìn)網(wǎng)絡(luò)LSTM,加入了forget gate。

二、sin與cos擬合應(yīng)用

函數(shù)sin擬合為cos,模型黑盒子類似sin(π/2+α)= cosα

import torch
from torch import nn
import numpy as np
import matplotlib.pyplot as plt

# 定義超參數(shù)
TIME_STEP = 10
INPUT_SIZE = 1
learning_rate = 0.001

class RNN(nn.Module):
    def __init__(self):
        super(RNN, self).__init__()

        self.rnn = nn.RNN(
            input_size=INPUT_SIZE,
            hidden_size=32,
            num_layers=1,
            batch_first=True
        )
        self.out = nn.Linear(32, 1)

    def forward(self, x, h_state):
        # r_out.shape:seq_len,batch,hidden_size*num_direction(1,10,32)
        r_out, h_state = self.rnn(x, h_state)
        out = self.out(r_out).squeeze()
        return out, h_state

rnn = RNN()

criterion = nn.MSELoss()
optimizer = torch.optim.Adam(rnn.parameters(), lr=learning_rate)

h_state = None

plt.figure(1, figsize=(12, 5))
plt.ion() # 開啟動態(tài)交互

for step in range(100):
    start, end = step * np.pi, (step + 1) * np.pi
    steps = np.linspace(start, end, TIME_STEP, dtype=np.float32, endpoint=False)
    x_np = np.sin(steps) # x_np.shape: 10
    y_np = np.cos(steps) # y_np.shape: 10

    x = torch.from_numpy(x_np[np.newaxis, :, np.newaxis]) # x.shape: 1,10,1
    y = torch.from_numpy(y_np) # y.shape: 10

    prediction, h_state = rnn(x, h_state)
    h_state = h_state.data

    loss = criterion(prediction, y)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    plt.plot(steps, y_np.flatten(), 'r-')
    plt.plot(steps, prediction.data.numpy().flatten(), 'b-')
    plt.draw()
    plt.pause(.05)

plt.ioff()
plt.show()

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

當(dāng)前名稱:如何進(jìn)行RNN總結(jié)及sin與cos擬合應(yīng)用
當(dāng)前鏈接:http://m.kartarina.com/article18/jedodp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)網(wǎng)站制作服務(wù)器托管全網(wǎng)營銷推廣外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
主站蜘蛛池模板: 亚洲国产精品无码久久98| 人妻中文字系列无码专区| 亚洲AV无码成人网站久久精品大 | 久久亚洲精品无码播放| 中文字幕无码免费久久9一区9| 亚洲精品无码高潮喷水在线| 无码不卡av东京热毛片| 午夜无码一区二区三区在线观看| 成年午夜无码av片在线观看 | 亚洲AV无码一区二区三区人| 无码av大香线蕉伊人久久| 人妻夜夜添夜夜无码AV| 中文字幕无码不卡在线| 无码毛片AAA在线| 国产精品va在线观看无码| 无码熟妇人妻av| 无码人妻视频一区二区三区| 精选观看中文字幕高清无码| 无码精品A∨在线观看无广告| 亚洲A∨无码一区二区三区| 亚洲精品无码99在线观看| 亚洲AV永久无码精品一福利| 亚洲AV无码一区二区二三区软件 | 午夜无码人妻av大片色欲| 日韩精品真人荷官无码| 最新无码A∨在线观看| 亚洲?v无码国产在丝袜线观看| 亚洲精品偷拍无码不卡av| 人妻丝袜中文无码av影音先锋专区 | 亚洲精品无码不卡在线播放| 无码乱人伦一区二区亚洲| 亚洲Av无码专区国产乱码DVD| 亚洲AV无码专区日韩| 无码精品久久一区二区三区| 精品国产AV无码一区二区三区| 亚洲av无码成人精品国产 | 一级毛片中出无码| av色欲无码人妻中文字幕| 男人av无码天堂| 无码熟熟妇丰满人妻啪啪软件 | 18禁无遮挡无码国产免费网站|