概念
深層神經(jīng)網(wǎng)絡(luò)中的前向傳播是指從輸入數(shù)據(jù)開始,逐層計算每個神經(jīng)元的輸出值,直到得到最終的預(yù)測值。
一般步驟
1輸入數(shù)據(jù)傳遞:
將輸入數(shù)據(jù)傳遞給網(wǎng)絡(luò)的輸入層。輸入數(shù)據(jù)通常是一個特征矩陣,每一列代表一個樣本,每一行代表一個特征。
2加權(quán)求和和激活函數(shù):
對于每個隱藏層,進行以下步驟:
3計算加權(quán)輸入,即將輸入數(shù)據(jù)與權(quán)重矩陣相乘并加上偏置向量。
將加權(quán)輸入傳遞給激活函數(shù),得到該隱藏層的激活值(輸出)。常用的激活函數(shù)包括Sigmoid、ReLU、Tanh等。
4傳遞至下一層:
將當前隱藏層的輸出作為下一隱藏層的輸入,重復(fù)步驟 2,直到到達輸出層。輸出層的輸出即為網(wǎng)絡(luò)的預(yù)測值。文章來源:http://www.zghlxwxcb.cn/news/detail-652577.html
5返回預(yù)測值和緩存:
返回預(yù)測值(輸出層的輸出)以及在計算過程中保存的緩存(各層的加權(quán)輸入和激活值),這些緩存在反向傳播中會用到。文章來源地址http://www.zghlxwxcb.cn/news/detail-652577.html
代碼實現(xiàn)
import numpy as np
# Sigmoid 激活函數(shù)
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 初始化參數(shù)
def initialize_parameters(layer_dims):
parameters = {}
L = len(layer_dims) # 網(wǎng)絡(luò)層數(shù)
for l in range(1, L):
parameters['W' + str(l)] = np.random.randn(layer_dims[l], layer_dims[l - 1]) * 0.01
parameters['b' + str(l)] = np.zeros((layer_dims[l], 1))
return parameters
# 前向傳播
def forward_propagation(X, parameters):
caches = []
A = X
L = len(parameters) // 2 # 網(wǎng)絡(luò)層數(shù)
for l in range(1, L):
Z = np.dot(parameters['W' + str(l)], A) + parameters['b' + str(l)]
A = sigmoid(Z)
caches.append((Z, A))
Z = np.dot(parameters['W' + str(L)], A) + parameters['b' + str(L)]
AL = sigmoid(Z)
caches.append((Z, AL))
return AL, caches
# 示例數(shù)據(jù)
X = np.random.randn(3, 10) # 3個特征,10個樣本
layer_dims = [3, 4, 5, 1] # 輸入層維度、各隱藏層維度、輸出層維度
parameters = initialize_parameters(layer_dims)
# 前向傳播
AL, caches = forward_propagation(X, parameters)
# 打印預(yù)測值
print("預(yù)測值:", AL)
到了這里,關(guān)于神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補充概念-27-深層網(wǎng)絡(luò)中的前向傳播的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!