深度学习-卷积层(1)

一、简介
前面我们已经对卷及部分有了较多的介绍,那么在本章中将重点解释如何在python和matlab上实现卷积层。

二、卷积的实现
在这里插入图片描述

简单来说,卷积层将在输入张量上的所有图像上应用卷积运算符,并转换输入深度以匹配滤镜数量。 在下面我们解释它的参数和信号:
1、N:批处理大小(4d张量上的图像数量)
2、F:卷积层上的过滤器数
3、kW / kH:内核宽度/高度(通常我们使用正方形图像,因此kW = kH)
4、H / W:图像的高度/宽度(通常H = W)
5、H’/ W’:卷积图像的高度/宽度(如果使用正确的填充,则与输入相同)
6、步幅:卷积滑动窗口将移动的像素数。
7、填充:将零添加到图像的边框以保持输入和输出大小相同。
8、深度:音量输入深度(即,如果输入是RGB图像,则深度为3)
9、输出深度:体积输出深度(与F相同)

正向传播
在向前传播时,您必须记住,我们将使用不同的滤镜“卷积”每个输入深度,并且每个滤镜将在图像上寻找不同的东西。
在这里插入图片描述

在这里观察到,来自第1层的所有神经元(闪光灯)共享相同的权重集,其他滤镜将在图像上寻找不同的模式。Matlab正向传播中,基本上,我们可以考虑卷积一章中的上一个“ convn_vanilla”函数,并在输入和输出上应用每个深度。
在这里插入图片描述

Python正向传播
在这里要观察的唯一一点是,由于多维数组在python中的表示方式不同,我们的张量将具有不同的顺序。
在这里插入图片描述

为了导出卷积层的反向传播,更容易考虑一维卷积,结果对于2d而言是相同的。因此,在信号X = [x0,x1,x2,x3,x4] X = [x0,x1,x2,x3,x4]和W = [w0,w1,w2] W = [w0, w1,w2],并且没有填充,我们将得到Y = [y0,y1,y2] Y = [y0,y1,y2],其中Y = X * flip(W)Y = X * flip(W)。 这里的翻转可以认为是180度旋转。现在,我们将所有“有效情况”转换为计算图,请注意,由于在卷积层上使用了偏差,因此我们现在添加偏差。请注意,这些图与完全连接的层基本相同,唯一的区别是我们拥有共享的权重。
在这里插入图片描述

实施说明
在跳转到代码之前,需要回顾一些要点:
如果在正向传播期间使用某些参数(即:“步幅/垫”),则需要将它们应用于反向传播。
在Python上,我们的多维张量将是“ input = [N x Depth x H x W]”,在matlab上它们将是“ input = [H xW x Depth x N]”
如前所述,输入的渐变与输入本身具有相同的大小“ size(x)== size(dx)”

Matlab向后传播:
在这里插入图片描述

Python向后传播:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值