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

举报
一个处女座的程序猿 发表于 2021/03/27 01:04:36 2021/03/27
【摘要】 DL:神经网络算法简介之Affine 层的简介、使用方法、代码实现之详细攻略     目录 Affine 层的简介 批版本的Affine 层 Affine 层的使用方法 Affine 层的代码实现       Affine 层的简介          Affine层:神经网络的正向传播中,进行的矩阵的乘积运算,在几何学领域被称为“仿射变换”。几何中,...

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

 

 

目录

Affine 层的简介

批版本的Affine 层

Affine 层的使用方法

Affine 层的代码实现


 

 

 

Affine 层的简介

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

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

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

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

批版本的Affine 层

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

批版本的Affi ne 层的计算图

 

 

 

Affine 层的使用方法

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


  
  1. X = np.random.rand(2) # 输入
  2. W = np.random.rand(2,3) # 权重
  3. B = np.random.rand(3) # 偏置
  4. #X、W、B分别是形状为(2,)、(2, 3)、(3,) 的多维数组。
  5. Y = np.dot(X, W) + B
  6. print(Y)
  7. #Y经过激活函数转换后,传递给下一层。这就是神经网络正向传播的流程。

 

 

 

Affine 层的代码实现


  
  1. #输入数据为张量(四维数据)
  2. class Affine:
  3. def __init__(self, W, b):
  4. self.W = W
  5. self.b = b
  6. self.x = None
  7. self.dW = None
  8. self.db = None
  9. def forward(self, x):
  10. self.x = x
  11. out = np.dot(x, self.W) + self.b
  12. return out
  13. def backward(self, dout):
  14. dx = np.dot(dout, self.W.T)
  15. self.dW = np.dot(self.x.T, dout)
  16. self.db = np.sum(dout, axis=0)
  17. return dx
  18. class Affine:
  19. def __init__(self, W, b):
  20. self.W =W
  21. self.b = b
  22. self.x = None
  23. self.original_x_shape = None
  24. # 权重和偏置参数的导数
  25. self.dW = None
  26. self.db = None
  27. def forward(self, x):
  28. # 对应张量
  29. self.original_x_shape = x.shape
  30. x = x.reshape(x.shape[0], -1)
  31. self.x = x
  32. out = np.dot(self.x, self.W) + self.b
  33. return out
  34. def backward(self, dout):
  35. dx = np.dot(dout, self.W.T)
  36. self.dW = np.dot(self.x.T, dout)
  37. self.db = np.sum(dout, axis=0)
  38. dx = dx.reshape(*self.original_x_shape) # 还原输入数据的形状(对应张量)
  39. return dx

 

 

参考文章”
DL学习—Affine 层:神经网络学习之Affine 层的简介、使用方法、代码实现之详细攻略

 

 

 

文章来源: yunyaniu.blog.csdn.net,作者:一个处女座的程序猿,版权归原作者所有,如需转载,请联系作者。

原文链接:yunyaniu.blog.csdn.net/article/details/88702694

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。