DL:神经网络算法简介之Affine 层的简介、使用方法、代码实现之详细攻略
生活随笔
收集整理的這篇文章主要介紹了
DL:神经网络算法简介之Affine 层的简介、使用方法、代码实现之详细攻略
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DL:神經網絡算法簡介之Affine 層的簡介、使用方法、代碼實現之詳細攻略
?
?
目錄
Affine 層的簡介
批版本的Affine 層
Affine 層的使用方法
Affine 層的代碼實現
?
?
?
Affine 層的簡介
? ? ? ? ?Affine層:神經網絡的正向傳播中,進行的矩陣的乘積運算,在幾何學領域被稱為“仿射變換”。幾何中,仿射變換包括一次線性變換和一次平移,分別對應神經網絡的加權和運算與加偏置運算。
Affine層的計算圖:求矩陣的乘積與偏置的和的運算用計算圖表示。各個節點間傳播的是矩陣。
Affine層的反向傳播:注意變量是多維數組。反向傳播時各個變量的下方標記了該變量的形狀。
注意矩陣的形狀:矩陣的乘積(“dot”節點)的反向傳播可以通過組建使矩陣對應維度的元素個數一致的乘積運算而推導出來。
批版本的Affine 層
? ? 當考慮N個數據一起進行正向傳播的情況,就是批版本的Affine層。
批版本的Affi ne 層的計算圖
?
?
?
Affine 層的使用方法
1、神經網絡中計算線性加權
#(1)、神經網絡的正向傳播中,為了計算加權信號的總和,使用了矩陣的乘積運算,即NumPy中是np.dot()。
?
?
?
Affine 層的代碼實現
#輸入數據為張量(四維數據) class Affine:def __init__(self, W, b):self.W = Wself.b = bself.x = Noneself.dW = Noneself.db = Nonedef forward(self, x):self.x = xout = np.dot(x, self.W) + self.breturn outdef backward(self, dout):dx = np.dot(dout, self.W.T)self.dW = np.dot(self.x.T, dout)self.db = np.sum(dout, axis=0)return dxclass Affine:def __init__(self, W, b):self.W =Wself.b = bself.x = Noneself.original_x_shape = None# 權重和偏置參數的導數self.dW = Noneself.db = Nonedef forward(self, x):# 對應張量self.original_x_shape = x.shapex = x.reshape(x.shape[0], -1)self.x = xout = np.dot(self.x, self.W) + self.breturn outdef backward(self, dout):dx = np.dot(dout, self.W.T)self.dW = np.dot(self.x.T, dout)self.db = np.sum(dout, axis=0)dx = dx.reshape(*self.original_x_shape) # 還原輸入數據的形狀(對應張量)return dx?
?
參考文章”
DL學習—Affine 層:神經網絡學習之Affine 層的簡介、使用方法、代碼實現之詳細攻略
?
?
?
總結
以上是生活随笔為你收集整理的DL:神经网络算法简介之Affine 层的简介、使用方法、代码实现之详细攻略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AI公开课:19.03.20吴甘沙-驭势
- 下一篇: 成功解决Visual Studio 20