文章目录
待处理问题
- 卷积运算与互相关运算的关系?
5.1 二维卷积层
5.1.1 二维互相关运算
在二维互相关运算中,卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。当卷积窗口滑动到某一位置时,窗口中的输入子数组与核数组按元素相乘并求和,得到输出数组中相应位置的元素。
5.1.2 二维卷积层
二维卷积层将输入和卷积核做互相关运算,并加上一个标量偏差来得到输出。卷积层的模型参数包括了卷积核和标量偏差。
5.1.3 图像中物体边缘检测
5.1.4 通过数据学习核数组
梯度清零的方式?
# 构造一个核数组形状是(1, 2)的二维卷积层
conv2d = Conv2D(kernel_size=(1, 2))
step = 20
lr = 0.01
for i in range(step):
Y_hat = conv2d(X)
l = ((Y_hat - Y) ** 2).sum()
l.backward()
# 梯度下降
conv2d.weight.data -= lr * conv2d.weight.grad
conv2d.bias.data -= lr * conv2d.bias.grad
# 梯度清0
conv2d.weight.grad.fill_(0)
conv2d.bias.grad.fill_(0)
if (i + 1) % 5 == 0:
print('Step %d, loss %.3f' % (i + 1, l.item()))
5.1.5 互相关运算核卷积运算
为了得到卷积运算的输出,我们只需将核数组左右翻转并上下翻转,再与输入数组做互相关运算。可见,卷积运算和互相关运算虽然类似,但如果它们使用相同的核数组,对于同一个输入,输出往往并不相同。
那么,你也许会好奇卷积层为何能使用互相关运算替代卷积运算。其实,在深度学习中核数组都是学出来的:卷积层无论使用互相关运算或卷积运算都不影响模型预测时的输出。
深度学习中的卷积运算实际上是互相关运算。
5.1.6 特征图核感受野
5.2 填充和步幅
5.2.1 填充
填充(padding)是指在输入高和宽的两侧填充元素(通常是0元素)
5.2.2 步幅
5.3 多输入通道和多输出通道
5.3.1 多输入通道
5.3.2 多输出通道
5.3.3 1*1卷积层
1×1卷积的主要计算发生在通道维上。输入和输出具有相同的高和宽。假设我们将通道维当作特征维,将高和宽维度上的元素当成数据样本,那么1×1卷积层的作用与全连接层等价。
5.4 池化层
5.4.1 二维最大池化层和平均池化层
5.4.2 填充和步幅
5.4.3 多通道
在处理多通道输入数据时,池化层对每个输入通道分别池化,而不是像卷积层那样将各通道的输入按通道相加。这意味着池化层的输出通道数与输入通道数相等。