3D卷积输入是结构为:
[B,C,D,H,W]
# 分别表示样本,输入通道,深度,高度,宽度
pytorch中3D卷积模型包含以下参数:
nn.Conv3d(in_channels=1, out_channels=2, kernel_size=3, stride=1, padding=1)# in_channels=1:输入通道数为 1。
# out_channels=2:输出通道数为 2(即有2个卷积核)。
# kernel_size=3:卷积核大小为 3x3x3。
# stride=1:卷积核在深度、高度和宽度方向上的移动步幅为 1。
# padding=1:在深度、高度和宽度方向上填充 1 层零值
举个例子:
输入张量:(1, 1, 10, 32, 32),表示 1 个样本,1 个输入通道,深度为 10,高度为 32,宽度为 32
卷积参数:
in_channels=1:输入通道数为 1。
out_channels=2:输出通道数为 2(即有 2 个卷积核)。
kernel_size=3:卷积核大小为 3x3x3。
stride=1:卷积核在深度、高度和宽度方向上的移动步幅为 1。
padding=1:在深度、高度和宽度方向上填充 1 层零值
那么输出张量的维度是多少?
输出张量的形状依然是 [B,C,D,H,W],答案是(1,2,10,32,32),我们来逐一看看每个维度是怎么得到的:
-
Batch Size(批量大小)
输入的 batch_size=1,卷积操作不改变批量大小。因此,输出张量的批量大小为 1 -
Channels(通道数)
输入通道数 in_channels=1,输出通道数 out_channels=2
卷积层使用 2 个 3x3x3 的卷积核,每个卷积核生成一个输出通道
因此,输出张量的通道数为 2 -
Depth(深度)
-
Height(高度)
-
Width(宽度)
综合以上计算,输出张量的形状为:(1,2,10,32,32)
卷积核的参数结构是[c_out,c_in,H,W]
对应到3D卷积上 c_out=D;c_in=C