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



相关文章
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
515 4
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
651 5
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
755 2
|
12月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
1319 0
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
471 0
|
传感器 机器学习/深度学习 数据采集
【航空发动机寿命预测】基于SE-ResNet网络的发动机寿命预测,C-MAPSS航空发动机寿命预测研究(Matlab代码实现)
【航空发动机寿命预测】基于SE-ResNet网络的发动机寿命预测,C-MAPSS航空发动机寿命预测研究(Matlab代码实现)
696 0
|
SQL 监控 安全
网络安全与信息安全:漏洞、加密与安全意识
随着互联网的迅猛发展,网络安全和信息安全问题日益受到关注。本文深入探讨了网络安全漏洞、加密技术以及提高个人和组织的安全意识的重要性。通过分析常见的网络攻击手段如缓冲区溢出、SQL注入等,揭示了计算机系统中存在的缺陷及其潜在威胁。同时,详细介绍了对称加密和非对称加密算法的原理及应用场景,强调了数字签名和数字证书在验证信息完整性中的关键作用。此外,还讨论了培养良好上网习惯、定期备份数据等提升安全意识的方法,旨在帮助读者更好地理解和应对复杂的网络安全挑战。
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
668 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
491 10
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
462 10

热门文章

最新文章