Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Laurence001
d2l-zh
提交
fd780a84
D
d2l-zh
项目概览
Laurence001
/
d2l-zh
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
d2l-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
fd780a84
编写于
12月 28, 2020
作者:
R
Rachel Hu
提交者:
Aston Zhang
2月 17, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
3rd polished
上级
73b7a4e8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
12 deletion
+15
-12
chapter_convolutional-neural-networks/channels.md
chapter_convolutional-neural-networks/channels.md
+15
-12
未找到文件。
chapter_convolutional-neural-networks/channels.md
浏览文件 @
fd780a84
# 多输入多输出通道
:label:
`sec_channels`
虽然在 :numref:
`subsec_why-conv-channels`
中,我们描述了构成每个图像的多个通道(例如,彩色图像具有标准的 RGB 通道来指示红、绿和蓝)和多层卷积层,但是到目前为止,我们仅展示了单个输入和单个输出通道的简化示例。这使得我们可以将输入、卷积核和输出看作二维张量。
虽然在 :numref:
`subsec_why-conv-channels`
中,我们描述了构成每个图像的多个通道和多层卷积层,例如彩色图像具有标准的 RGB 通道来指示红、绿和蓝。
但是到目前为止,我们仅展示了单个输入和单个输出通道的简化示例。
这使得我们可以将输入、卷积核和输出看作二维张量。
当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量。例如,每个RGB输入图像具有 $3
\t
imes h
\t
imes w$ 的形状。我们将这个尺寸为 $3$ 的轴称为
*通道*
维度。在本节中,我们将更深入地研究具有多输入和多输出通道的卷积核。
当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量。例如,每个RGB输入图像具有 $3
\t
imes h
\t
imes w$ 的形状。我们将这个尺寸为 $3$ 的轴称为
*通道*
(channel)
维度。在本节中,我们将更深入地研究具有多输入和多输出通道的卷积核。
## 多输入通道
当输入包含多个通道时,需要构造一个与输入数据具有相同
数目输入通道
的卷积核,以便与输入数据进行互相关运算。假设输入的通道数为 $c_i$,那么卷积核的输入通道数也需要为 $c_i$ 。如果卷积核的窗口形状是 $k_h
\t
imes k_w$,那么当 $c_i=1$ 时,我们可以把卷积核看作形状为 $k_h
\t
imes k_w$ 的二维张量。
当输入包含多个通道时,需要构造一个与输入数据具有相同
输入通道数目
的卷积核,以便与输入数据进行互相关运算。假设输入的通道数为 $c_i$,那么卷积核的输入通道数也需要为 $c_i$ 。如果卷积核的窗口形状是 $k_h
\t
imes k_w$,那么当 $c_i=1$ 时,我们可以把卷积核看作形状为 $k_h
\t
imes k_w$ 的二维张量。
然而,当 $c_i>1$ 时,我们内核的每个输入通道将包含形状为 $k_h
\t
imes k_w$ 的张量。将这些张量 $c_i$ 连
接在一起可以得到形状为 $c_i
\t
imes k_h
\t
imes k_w$ 的卷积核。由于输入和卷积核都有 $c_i$ 个通道,我们可以对每个通道的输入
二维张量和卷积核的二维张量进行互相关运算,再对通道求和(将 $c_i$ 的结果相加)得到二维张量。这是多通道输入和多输入通道卷积核之间进行二维互相关运算的结果。
然而,当 $c_i>1$ 时,我们内核的每个输入通道将包含形状为 $k_h
\t
imes k_w$ 的张量。将这些张量 $c_i$ 连
结在一起可以得到形状为 $c_i
\t
imes k_h
\t
imes k_w$ 的卷积核。由于输入和卷积核都有 $c_i$ 个通道,我们可以对每个通道输入的
二维张量和卷积核的二维张量进行互相关运算,再对通道求和(将 $c_i$ 的结果相加)得到二维张量。这是多通道输入和多输入通道卷积核之间进行二维互相关运算的结果。
在 :numref:
`fig_conv_multi_in`
中,我们演示了一个具有两个输入通道的二维互相关运算的示例。阴影部分是第一个输出元素以及用于计算这个输出的输入和核张量元素:$(1
\t
imes1+2
\t
imes2+4
\t
imes3+5
\t
imes4)+(0
\t
imes0+1
\t
imes1+3
\t
imes2+4
\t
imes3)=56$。
...
...
@@ -18,7 +20,7 @@
:label:
`fig_conv_multi_in`
为了加深理解,我们将多输入通道互相关运算实现一下。
简而言之,我们所做的就是对每个通道执行
一个互相关运算
,然后将结果相加。
简而言之,我们所做的就是对每个通道执行
互相关操作
,然后将结果相加。
```
{.python .input}
from d2l import mxnet as d2l
...
...
@@ -84,7 +86,7 @@ K = d2l.stack((K, K + 1, K + 2), 0)
K.shape
```
下面,我们对输入张量
`X`
与内核张量
`K`
执行互相关运算。现在的输出包含 $3$ 个通道,第一通道的结果与先前输入张量
`X`
和多输入单输出通道的结果一致。
下面,我们对输入张量
`X`
与内核张量
`K`
执行互相关运算。现在的输出包含 $3$ 个通道,第一
个
通道的结果与先前输入张量
`X`
和多输入单输出通道的结果一致。
```
{.python .input}
#@tab all
...
...
@@ -96,19 +98,20 @@ corr2d_multi_in_out(X, K)
$1
\t
imes 1$ 卷积,即 $k_h = k_w = 1$,看起来似乎没有多大意义。毕竟,卷积的本质是有效提取相邻像素间的相关特征,而 $1
\t
imes 1$ 卷积显然没有此作用。
尽管如此,$1
\t
imes 1$ 仍然十分流行,时常包含在复杂深层网络的设计中。下面,让我们详细地解读一下它的实际作用。
因为使用了最小窗口,$1
\t
imes 1$ 卷积失去了卷积层的特有能力——
识别(在高度和宽度维度上)相邻元素之
间相互作用的能力。
因为使用了最小窗口,$1
\t
imes 1$ 卷积失去了卷积层的特有能力——
在高度和宽度维度上,识别相邻元素
间相互作用的能力。
而 $1
\t
imes 1$ 卷积的唯一计算发生在通道上。
:numref:
`fig_conv_1x1`
展示了使用 $1
\t
imes 1$ 卷积核与 $3$ 个输入通道和 $2$ 个输出通道的互相关计算。
这里输入和输出具有相同的高度和宽度,输出中的每个元素都是从输入图像中同一位置的元素的线性组合。
我们可以将 $1
\t
imes 1$ 卷积层看作是在每个像素位置应用的全连接层,以 $c_i$ 个输入值转换为 $c_o$ 个输出值。
因为这仍然是一个卷积层,所以跨像素的权重是一致的。
同时,$1
\t
imes 1$ 卷积层需要 $c_o
\t
imes c_i$ 权重(以及偏差)。
同时,$1
\t
imes 1$ 卷积层需要的权重维度为 $c_o
\t
imes c_i$ ,再额外加上一个偏差。
![
互相关计算使用了具有3个输入通道和2个输出通道的 $1\times 1$ 卷积内核。其中,输入和输出具有相同的高度和宽度。
](
../img/conv-1x1.svg
)
:label:
`fig_conv_1x1`
下面,我们使用
完
全连接层实现 $1
\t
imes 1$ 卷积。
下面,我们使用全连接层实现 $1
\t
imes 1$ 卷积。
请注意,我们需要对输入和输出的数据形状进行微调。
```
{.python .input}
...
...
@@ -146,13 +149,13 @@ assert float(d2l.reduce_sum(d2l.abs(Y1 - Y2))) < 1e-6
## 小结
*
多输入多输出通道可以用来扩展卷积层的模型。
*
$1
\t
imes 1$ 卷积层相当于全连接层。
*
当以每像素为基础应用时,
$1
\t
imes 1$ 卷积层相当于全连接层。
*
$1
\t
imes 1$ 卷积层通常用于调整网络层的通道数量和控制模型复杂性。
## 练习
1.
假设我们有两个卷积核,大小分别为 $k_1$ 和 $k_2$(中间没有非线性)。
1.
证明
可以用单卷积表示运算结果
。
1.
假设我们有两个卷积核,大小分别为 $k_1$ 和 $k_2$(中间没有非线性
激活函数
)。
1.
证明
运算可以用单次卷积来表示
。
1.
这个等效的单卷积的维数是多少呢?
1.
反之亦然吗?
1.
假设输入为 $c_i
\t
imes h
\t
imes w$,卷积核大小为 $c_o
\t
imes c_i
\t
imes k_h
\t
imes k_w$,填充为 $(p_h, p_w)$,步幅为 $(s_h, s_w)$。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录