cnn小总结

卷积神经网络:

1.不变性:

设计适合于计算机视觉的神经网络结构:

平移不变性:不管出现在图像中的哪个位置,神经网络的底层应该对相同的图像区域做出类似的响应。这个原理即为“平移不变性”。

局部性:神经网络的底层应该只探索输入图像中的局部区域,而不考虑图像远处区域的内容,这就是“局部性”原则。最终,这些局部特征可以融会贯通,在整个图像级别上做出预测。

平移不变性。 这意味着输入 X 中的移位,应该仅与隐藏表示 H 中的移位相关。

 

这就是 卷积 (convolution)

局部性。为了收集用来训练参数 [H]i,j 的相关信息,我们不应偏离到距 (i,j) 很远的地方。

 

这便是一个卷积层。卷积神经网络是包含卷积层的一类特殊的神经网络。V 被称为 卷积核 (convolution kernel) 或者 滤波器 (filter),是可学习的权重。

  1. 图像卷积

卷积所表达的运算其实是 互相关运算 (cross-correlation)

 

输出的卷积层有时被称为 特征映射 (Feature Map),因为它可以被视为一个输入映射到下一层的空间维度的转换器。

在CNN中,对于某一层的任意元素 xx ,其 感受野 (Receptive Field)是指在前向传播期间可能影响 xx 计算的所有元素(来自所有先前层)。

二维互相关运算具体代码:

def corr2d(X, K):  #@save

    """计算二维互相关运算。"""

    h, w = K.shape

    Y = torch.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1))

    for i in range(Y.shape[0]):

        for j in range(Y.shape[1]):

            Y[i, j] = (X[i:i + h, j:j + w] * K).sum()

    return Y

卷积层对输入和卷积核权重进行互相关运算,并在添加标量偏置之后产生输出。 所以,卷积层中的两个被训练的参数卷积核权重标量偏置。 就像我们之前随机初始化全连接层一样,在训练基于卷积层的模型时,我们也随机初始化卷积核权重

class Conv2D(nn.Module):

    def __init__(self, kernel_size):

        super().__init__()

        self.weight = nn.Parameter(torch.rand(kernel_size))

        self.bias = nn.Parameter(torch.zeros(1))

    def forward(self, x):

        return corr2d(x, self.weight) + self.bias

  1. 填充和步幅

 填充(padding)和 步幅 (stride)是会影响输出的大小的因素

在应用了连续的卷积之后,我们最终得到的输出远小于输入大小。这是由于卷积核的宽度和高度通常大于 11 所导致的。如此一来,原始图像的边界丢失了许多有用信息。 而填充 是解决此问题最有效的方法。

我们可能希望大幅降低图像的宽度和高度。例如,如果我们发现原始的输入分辨率十分冗余。 步幅则可以在这类情况下提供帮助。

如果我们添加 phph 行填充(大约一半在顶部,一半在底部)和 pwpw 列填充(左侧大约一半,右侧一半),则输出形状将为

 

在许多情况下,我们需要设置 ph=kh−1ph=kh−1 和 pw=kw−1pw=kw−1使输入和输出具有相同的高度和宽度。

卷积神经网络中卷积核的高度和宽度通常为奇数,例如 1、3、5 或 7。 选择奇数的好处是,保持空间维度的同时,我们可以在顶部和底部填充相同数量的行,在左侧和右侧填充相同数量的列。

  1. 多输入与多输出通道

当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量。例如,每个RGB输入图像具有 3×h×w3×h×w 的形状。我们将这个大小为 33 的轴称为 通道(channel) 维度。

多输入通道:

输入包含多个通道时,需要构造一个与输入数据具有相同输入通道数目的卷积核,以便与输入数据进行互相关运算。

每个通道执行互相关操作,然后将结果相加。

多输出通道:

在最流行的神经网络架构中,随着神经网络层数的加深,我们常会增加输出通道的维数,通过减少空间分辨率获得更大的通道深度

可以将每个通道看作是对不同特征的响应。而现实可能更为复杂一些,因为每个通道不是独立学习的,而是为了共同使用而优化的。因此,多输出通道并不仅是学习多个单通道的检测器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值