4 多输入多输出通道
4.1 多输入通道
- 对每个通道分别进行互现观运算,然后按通道相加
1 | import torch |
tensor([[ 56., 72.],
[104., 120.]])
4.2 多输出通道
- 在流行的网络架构中,随着层数的加深,通常会增加输出通道的维数,通过减少空间分辨率以获得更大的通道深度。
- 可以将每个通道看作对不同特征的响应。而现实可能更为复杂,因为每个通道不是独立学习的,而是为了共同使用而优化的。
- 输入通道数$c_i$,输出通道数$c_o$
- 对于一个输入通道:卷积核:$c_i \times k_h \times k_w$,卷积后相加获得一个二维张量。
- 卷积核:$c_o \times c_i \times k_h \times k_w$输出通道$c_o$
1 | def corr2d_multi_in_out(X,K): |
torch.Size([3, 2, 2, 2])
tensor([[[ 56., 72.],
[104., 120.]],
[[ 76., 100.],
[148., 172.]],
[[ 96., 128.],
[192., 224.]]])
4.3 1x1卷积层
- 1x1卷积失去了卷积层特有的能力(在高度和宽度维度上,识别相邻元素间相互作用的能力。)其实1x1卷积的唯一计算发生在通道上。
- 可以将1x1卷积层看作在每个像素位置应用的全连接层,以$c_i$个输入值转换成$c_o$个输出。
- 使用全连接层实现1x1卷积
1 | def corr2d_multi_in_out_1x1(X,K): |
- 上述函数相当于corr2d_multi_in_out函数
1 | X = torch.normal(0,1,(3,3,3)) |