1、输出、输出的图片大小
2、stride 控制,CNN卷积核一次挪动多少。
padding,控制对原始图片填充多少个东西。能控制卷积之后的feature map的大小;
(3, 3, 3),卷积核的大小,能够控制使用多少个原始像素参与卷积。
# https://pytorch.org/docs/stable/generated/torch.nn.Conv3d.html import torch import torch.nn as nn input = torch.randn(20, 16, 10, 50, 100) m = nn.Conv3d(16, 33, 3, stride=1) output = m(input) #(20, 33, 10, 50, 100) #20, 33, 4, 24, 49 pass # m = nn.Conv3d(16, 33, (3, 5, 2), stride=(2, 1, 1), padding=(4, 2, 0))
-----------------
当,m = nn.Conv3d(16, 33, (3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1)) 时
print(output.shape) 结果为 torch.Size([20, 33, 10, 50, 100])
单张图片的大小没有发生变化10*50*100,对应D*H*W
3、m = nn.Conv3d(16, 33, 3, stride=1)
16代表,卷积前,的时间尺度。可以理解为用了16个时刻的图片;
33代表,卷积后,的时间尺度。第一个时间尺度上的feature map等于之前的16个时刻的卷积结果。第二个同样是之前的16个时刻的卷积结果。以此类推,一共有33个新的时刻。
卷积和的大小是3*3*3. 步长stride=1
===================================================================
以上的理解是错误的。↑
请使用以下的理解:
[pytorch] torch.nn.Conv3D 的使用介绍_一点也不可爱的王同学的博客-CSDN博客
#构建网络前,首先需要把数据集的张量,整理成input = torch.randn(N, C, D, W, H) #N个小视频;每一帧的通道数为C;视频的时间深度为D;WH代表宽高 #3D卷积核 # m = nn.Conv3d(1, 1, (3, 5, 5), stride=1) # 设计卷积核,时间上的卷积是3,空间上的卷积是5;通道数没变,还是1,可以理解为还是只有一个通道。 #https://pytorch.org/docs/stable/generated/torch.nn.Conv3d.html
对比2D卷积和,多了D,那么D肯定代表时间啊。想什么呢。
-------------------------
stride 本质上就是3D卷积核时间长的大小