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

神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-26-前向和反向傳播

這篇具有很好參考價值的文章主要介紹了神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-26-前向和反向傳播。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

簡單比較

前向傳播(Forward Propagation):

前向傳播是神經(jīng)網(wǎng)絡(luò)中的正向計算過程,用于從輸入數(shù)據(jù)開始,逐層計算每個神經(jīng)元的輸出值,直到得到最終的預(yù)測值。在前向傳播過程中,我們按以下步驟進(jìn)行:

輸入數(shù)據(jù):將輸入數(shù)據(jù)傳遞給輸入層。

加權(quán)求和:對每個神經(jīng)元的輸入進(jìn)行加權(quán)求和,即將輸入與權(quán)重相乘并加上偏差。

激活函數(shù):將加權(quán)求和的結(jié)果輸入激活函數(shù)(如Sigmoid、ReLU等),得到神經(jīng)元的輸出。

傳遞至下一層:將當(dāng)前層的輸出作為下一層的輸入,重復(fù)步驟 2 和 3,直到達(dá)到輸出層,得到最終的預(yù)測值。

反向傳播(Backward Propagation):

反向傳播是神經(jīng)網(wǎng)絡(luò)中的梯度計算和權(quán)重更新過程,用于根據(jù)損失函數(shù)計算每個參數(shù)的梯度,然后根據(jù)梯度信息更新網(wǎng)絡(luò)的權(quán)重和偏差。在反向傳播過程中,我們按以下步驟進(jìn)行:

計算損失:使用損失函數(shù)計算預(yù)測值與真實(shí)標(biāo)簽之間的差距。

計算梯度:通過鏈?zhǔn)椒▌t,從輸出層開始,逐層計算每個參數(shù)的梯度,傳遞梯度至前一層。對于每一層,計算權(quán)重和偏差的梯度,以及當(dāng)前層輸入的梯度。

參數(shù)更新:使用計算得到的梯度信息,根據(jù)優(yōu)化算法(如梯度下降法、Adam等)更新每個參數(shù)的值,以減小損失函數(shù)。

重復(fù)迭代:重復(fù)進(jìn)行前向傳播和反向傳播,多次迭代,直到損失函數(shù)足夠小或達(dá)到預(yù)定的迭代次數(shù)。

前向傳播和反向傳播是神經(jīng)網(wǎng)絡(luò)訓(xùn)練的基石,通過不斷地在這兩個過程中更新參數(shù),神經(jīng)網(wǎng)絡(luò)逐漸優(yōu)化其性能,從而能夠更好地進(jìn)行預(yù)測和模式識別任務(wù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-653742.html

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

import numpy as np

# Sigmoid 激活函數(shù)及其導(dǎo)數(shù)
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):
    return x * (1 - x)

# 初始化參數(shù)
def initialize_parameters(input_size, hidden_size, output_size):
    parameters = {
        'W1': np.random.randn(hidden_size, input_size),
        'b1': np.zeros((hidden_size, 1)),
        'W2': np.random.randn(output_size, hidden_size),
        'b2': np.zeros((output_size, 1))
    }
    return parameters

# 前向傳播
def forward_propagation(X, parameters):
    W1, b1, W2, b2 = parameters['W1'], parameters['b1'], parameters['W2'], parameters['b2']
    Z1 = np.dot(W1, X) + b1
    A1 = sigmoid(Z1)
    Z2 = np.dot(W2, A1) + b2
    A2 = sigmoid(Z2)
    cache = {'Z1': Z1, 'A1': A1, 'Z2': Z2, 'A2': A2}
    return A2, cache

# 計算損失
def compute_loss(A2, Y):
    m = Y.shape[1]
    loss = -np.sum(Y * np.log(A2) + (1 - Y) * np.log(1 - A2)) / m
    return loss

# 反向傳播
def backward_propagation(X, Y, cache, parameters):
    m = X.shape[1]
    A1, A2 = cache['A1'], cache['A2']
    W2 = parameters['W2']

    dZ2 = A2 - Y
    dW2 = np.dot(dZ2, A1.T) / m
    db2 = np.sum(dZ2, axis=1, keepdims=True) / m

    dZ1 = np.dot(W2.T, dZ2) * sigmoid_derivative(A1)
    dW1 = np.dot(dZ1, X.T) / m
    db1 = np.sum(dZ1, axis=1, keepdims=True) / m

    grads = {'dW1': dW1, 'db1': db1, 'dW2': dW2, 'db2': db2}
    return grads

# 更新參數(shù)
def update_parameters(parameters, grads, learning_rate):
    parameters['W1'] -= learning_rate * grads['dW1']
    parameters['b1'] -= learning_rate * grads['db1']
    parameters['W2'] -= learning_rate * grads['dW2']
    parameters['b2'] -= learning_rate * grads['db2']
    return parameters

# 主函數(shù)
def deep_neural_network(X, Y, hidden_size, learning_rate, num_iterations):
    np.random.seed(42)
    input_size = X.shape[0]
    output_size = Y.shape[0]
    parameters = initialize_parameters(input_size, hidden_size, output_size)

    for i in range(num_iterations):
        A2, cache = forward_propagation(X, parameters)
        loss = compute_loss(A2, Y)
        grads = backward_propagation(X, Y, cache, parameters)
        parameters = update_parameters(parameters, grads, learning_rate)

        if i % 100 == 0:
            print(f'Iteration {i}, Loss: {loss:.4f}')

    return parameters

# 示例數(shù)據(jù)
X = np.array([[0, 0, 1, 1], [0, 1, 0, 1]])
Y = np.array([[0, 1, 1, 0]])

# 定義超參數(shù)
hidden_size = 4
learning_rate = 0.1
num_iterations = 10000

# 訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)
parameters = deep_neural_network(X, Y, hidden_size, learning_rate, num_iterations)

# 預(yù)測
predictions, _ = forward_propagation(X, parameters)
print('Predictions:', predictions)

到了這里,關(guān)于神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-26-前向和反向傳播的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-02-邏輯回歸

    神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-02-邏輯回歸

    邏輯回歸是一種用于二分分類問題的統(tǒng)計學(xué)習(xí)方法,盡管名字中帶有\(zhòng)\\"回歸\\\"一詞,但實(shí)際上它用于分類任務(wù)。邏輯回歸的目標(biāo)是根據(jù)輸入特征來預(yù)測數(shù)據(jù)點(diǎn)屬于某個類別的概率,然后將概率映射到一個離散的類別標(biāo)簽。 邏輯回歸模型的核心思想是將線性回歸模型的輸出通過一

    2024年02月12日
    瀏覽(26)
  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-59-padding

    在深度學(xué)習(xí)中,“padding”(填充)通常是指在卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNNs)等神經(jīng)網(wǎng)絡(luò)層中,在輸入數(shù)據(jù)的周圍添加額外的元素(通常是零),以調(diào)整輸入數(shù)據(jù)的尺寸或形狀,從而影響輸出的尺寸。 主要目的是為了解決卷積層或池化層等操作對輸入尺寸的影

    2024年02月12日
    瀏覽(48)
  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-48-rmsprop

    RMSProp(Root Mean Square Propagation)是一種優(yōu)化算法,用于在訓(xùn)練神經(jīng)網(wǎng)絡(luò)等機(jī)器學(xué)習(xí)模型時自適應(yīng)地調(diào)整學(xué)習(xí)率,以加速收斂并提高性能。RMSProp可以有效地處理不同特征尺度和梯度變化,對于處理稀疏數(shù)據(jù)和非平穩(wěn)目標(biāo)函數(shù)也表現(xiàn)良好。 RMSProp的核心思想是根據(jù)參數(shù)梯度的歷史

    2024年02月12日
    瀏覽(29)
  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-62-池化層

    池化層(Pooling Layer)是深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)中常用的一種層級結(jié)構(gòu),用于減小輸入數(shù)據(jù)的空間尺寸,從而降低模型的計算復(fù)雜度,減少過擬合,并且在一定程度上提取輸入數(shù)據(jù)的重要特征。池化層通常緊跟在卷積層之后,用于縮小卷積層輸出的尺寸。 常見的池化操作包括最大

    2024年02月12日
    瀏覽(30)
  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-42-梯度檢驗(yàn)

    梯度檢驗(yàn)(Gradient Checking)是一種驗(yàn)證數(shù)值計算梯度與解析計算梯度之間是否一致的技術(shù),通常用于確保實(shí)現(xiàn)的反向傳播算法正確性。在深度學(xué)習(xí)中,通過梯度檢驗(yàn)可以幫助驗(yàn)證你的神經(jīng)網(wǎng)絡(luò)模型是否正確地計算了梯度,從而減少可能的錯誤。 梯度檢驗(yàn)的基本思想是使用數(shù)值

    2024年02月11日
    瀏覽(21)
  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-01-二分分類

    二分分類是一種常見的機(jī)器學(xué)習(xí)任務(wù),其目標(biāo)是將一組數(shù)據(jù)點(diǎn)分成兩個不同的類別。在二分分類中,每個數(shù)據(jù)點(diǎn)都有一個與之關(guān)聯(lián)的標(biāo)簽,通常是“正類”或“負(fù)類”。算法的任務(wù)是根據(jù)數(shù)據(jù)點(diǎn)的特征來學(xué)習(xí)一個模型,以便能夠準(zhǔn)確地將新的未標(biāo)記數(shù)據(jù)點(diǎn)分配到正確的類別中

    2024年02月13日
    瀏覽(31)
  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-56-遷移學(xué)習(xí)

    遷移學(xué)習(xí)(Transfer Learning)是一種機(jī)器學(xué)習(xí)技術(shù),旨在將在一個任務(wù)上學(xué)到的知識或模型遷移到另一個相關(guān)任務(wù)上,以提高新任務(wù)的性能。遷移學(xué)習(xí)的核心思想是通過利用源領(lǐng)域(source domain)的知識來改善目標(biāo)領(lǐng)域(target domain)的學(xué)習(xí)任務(wù)。 遷移學(xué)習(xí)的優(yōu)勢在于可以充分利

    2024年02月12日
    瀏覽(21)
  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-60-卷積步長

    在深度學(xué)習(xí)中,卷積步長(convolution stride)是指在卷積操作中滑動卷積核的步幅。卷積操作是神經(jīng)網(wǎng)絡(luò)中常用的操作之一,用于從輸入數(shù)據(jù)中提取特征。步長決定了卷積核在輸入數(shù)據(jù)上的滑動間隔,從而影響輸出特征圖的大小。 卷積步長的值可以是正整數(shù),通常為1、2、3等。

    2024年02月12日
    瀏覽(27)
  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-17-計算神經(jīng)網(wǎng)絡(luò)的輸出

    計算神經(jīng)網(wǎng)絡(luò)的輸出通常涉及前向傳播(Forward Propagation)的過程,其中輸入數(shù)據(jù)通過網(wǎng)絡(luò)的層級結(jié)構(gòu),逐步被傳遞并變換,最終生成預(yù)測結(jié)果。下面我將為你展示一個簡單的神經(jīng)網(wǎng)絡(luò)前向傳播的示例。 假設(shè)我們有一個具有以下參數(shù)的簡單神經(jīng)網(wǎng)絡(luò): 輸入層:2個神經(jīng)元 隱藏

    2024年02月12日
    瀏覽(30)
  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補(bǔ)充概念-43-梯度下降法

    梯度下降法(Gradient Descent)是一種優(yōu)化算法,用于在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中最小化(或最大化)目標(biāo)函數(shù)。它通過迭代地調(diào)整模型參數(shù),沿著梯度方向更新參數(shù),以逐步接近目標(biāo)函數(shù)的最優(yōu)解。梯度下降法在訓(xùn)練神經(jīng)網(wǎng)絡(luò)等機(jī)器學(xué)習(xí)模型時非常常用,可以幫助模型學(xué)習(xí)數(shù)據(jù)中

    2024年02月11日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包