DL:神经网络算法简介之Affine 层的简介、使用方法、代码实现之详细攻略

简介: DL:神经网络算法简介之Affine 层的简介、使用方法、代码实现之详细攻略

Affine 层的简介


        Affine层:神经网络的正向传播中,进行的矩阵的乘积运算,在几何学领域被称为“仿射变换”。几何中,仿射变换包括一次线性变换和一次平移,分别对应神经网络的加权和运算与加偏置运算。


Affine层的计算图:求矩阵的乘积与偏置的和的运算用计算图表示。各个节点间传播的是矩阵。


image.png


Affine层的反向传播:注意变量是多维数组。反向传播时各个变量的下方标记了该变量的形状。


image.png


注意矩阵的形状:矩阵的乘积(“dot”节点)的反向传播可以通过组建使矩阵对应维度的元素个数一致的乘积运算而推导出来。

image.png



批版本的Affine 层


   当考虑N个数据一起进行正向传播的情况,就是批版本的Affine层。


批版本的Affi ne 层的计算图


image.png





Affine 层的使用方法


1、神经网络中计算线性加权

#(1)、神经网络的正向传播中,为了计算加权信号的总和,使用了矩阵的乘积运算,即NumPy中是np.dot()。


X = np.random.rand(2) # 输入

W = np.random.rand(2,3) # 权重

B = np.random.rand(3) # 偏置

#X、W、B分别是形状为(2,)、(2, 3)、(3,) 的多维数组。

Y = np.dot(X, W) + B

print(Y)

#Y经过激活函数转换后,传递给下一层。这就是神经网络正向传播的流程。




Affine 层的代码实现


#输入数据为张量(四维数据)

class Affine:

   def __init__(self, W, b):

       self.W = W

       self.b = b

       self.x = None

       self.dW = None

       self.db = None

   def forward(self, x):

       self.x = x

       out = np.dot(x, self.W) + self.b

       return out

   def 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 dx

class Affine:

   def __init__(self, W, b):

       self.W =W

       self.b = b

     

       self.x = None

       self.original_x_shape = None

       # 权重和偏置参数的导数

       self.dW = None

       self.db = None

   def forward(self, x):

       # 对应张量

       self.original_x_shape = x.shape

       x = x.reshape(x.shape[0], -1)

       self.x = x

       out = np.dot(self.x, self.W) + self.b

       return out

   def 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



相关文章
|
7月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
641 0
|
7月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
314 8
|
7月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
357 8
|
7月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
338 0
|
SQL 监控 安全
网络安全与信息安全:漏洞、加密与安全意识
随着互联网的迅猛发展,网络安全和信息安全问题日益受到关注。本文深入探讨了网络安全漏洞、加密技术以及提高个人和组织的安全意识的重要性。通过分析常见的网络攻击手段如缓冲区溢出、SQL注入等,揭示了计算机系统中存在的缺陷及其潜在威胁。同时,详细介绍了对称加密和非对称加密算法的原理及应用场景,强调了数字签名和数字证书在验证信息完整性中的关键作用。此外,还讨论了培养良好上网习惯、定期备份数据等提升安全意识的方法,旨在帮助读者更好地理解和应对复杂的网络安全挑战。
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
418 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
328 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
327 10
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。

热门文章

最新文章