如何理解3D卷积神经网络核中的参数?

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肯定代表时间啊。想什么呢。

posted @ 2022-03-20 21:36  bH1pJ  阅读(782)  评论(0编辑  收藏  举报