免费建网站平台教,枣庄三合一网站开发公司,内部网站建设软件下载,html课设做网站多输入多输出通道
每个图像的多个通道和多层卷积层。例如彩色图像具有标准的RGB通道来代表红、绿和蓝。 但是到目前为止#xff0c;我们仅展示了单个输入和单个输出通道的简化例子。 这使得我们可以将输入、卷积核和输出看作二维张量。
当我们添加通道时#xff0c;我们的输…多输入多输出通道
每个图像的多个通道和多层卷积层。例如彩色图像具有标准的RGB通道来代表红、绿和蓝。 但是到目前为止我们仅展示了单个输入和单个输出通道的简化例子。 这使得我们可以将输入、卷积核和输出看作二维张量。
当我们添加通道时我们的输入和隐藏的表示都变成了三维张量。例如每个RGB输入图像具有3×ℎ×w的形状。我们将这个大小为3的轴称为通道channel维度。本节将更深入地研究具有多输入和多输出通道的卷积核。
多输入通道 我们演示了一个具有两个输入通道的二维互相关运算的示例。阴影部分是第一个输出元素以及用于计算这个输出的输入和核张量元素(1×12×24×35×4)(0×01×13×24×3)56 两个输入通道的互相关计算。 为了加深理解我们实现一下多输入通道互相关运算。 简而言之我们所做的就是对每个通道执行互相关操作然后将结果相加。
import torch
from d2l import torch as d2ldef corr2d_multi_in(X, K):# 先遍历“X”和“K”的第0个维度通道维度再把它们加在一起return sum(d2l.corr2d(x, k) for x, k in zip(X, K))
我们可以构造与图中的值相对应的输入张量X和核张量K以验证互相关运算的输出。
X torch.tensor([[[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]],[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]])
K torch.tensor([[[0.0, 1.0], [2.0, 3.0]], [[1.0, 2.0], [3.0, 4.0]]])corr2d_multi_in(X, K) tensor([[ 56., 72.],[104., 120.]]) 多输出通道
到目前为止不论有多少输入通道我们还只有一个输出通道。然而每一层有多个输出通道是至关重要的。在最流行的神经网络架构中随着神经网络层数的加深我们常会增加输出通道的维数通过减少空间分辨率以获得更大的通道深度。直观地说我们可以将每个通道看作对不同特征的响应。而现实可能更为复杂一些因为每个通道不是独立学习的而是为了共同使用而优化的。因此多输出通道并不仅是学习多个单通道的检测器。
如下所示我们实现一个计算多个通道的输出的互相关函数。
def corr2d_multi_in_out(X, K):# 迭代“K”的第0个维度每次都对输入“X”执行互相关运算。# 最后将所有结果都叠加在一起return torch.stack([corr2d_multi_in(X, k) for k in K], 0)
通过将核张量K与K1K中每个元素加1和K2连接起来构造了一个具有3个输出通道的卷积核。
K torch.stack((K, K 1, K 2), 0)
K.shape torch.Size([3, 2, 2, 2]) 下面我们对输入张量X与卷积核张量K执行互相关运算。现在的输出包含3个通道第一个通道的结果与先前输入张量X和多输入单输出通道的结果一致。
corr2d_multi_in_out(X, K) tensor([[[ 56., 72.],[104., 120.]],[[ 76., 100.],[148., 172.]],[[ 96., 128.],[192., 224.]]])