[pytorch][基础模块] torch.nn.Conv3D 使用样例与说明

torch.nn.Conv3D

3D卷积, 输入的shape是 ( N , C i n , D , H , W ) (N, C_{in},D,H,W) (N,Cin,D,H,W),输出shape ( N , C o u t , D o u t , H o u t , W o u t ) (N,C_{out},D_{out},H_{out},W_{out}) (N,Cout,Dout,Hout,Wout)

实际使用建议:
N N N 就是batch_size,无话可说; C i n C_{in} Cin 则对应着输入图像的通道数,如RGB\BGR图像这一维度就是3; D D D则是深度,如果是对于视频序列使用的3d conv,那么这个 D D D实际对应的就是要执行卷积的frame_size H , W H,W H,W对应的就是输入图像的高和宽

另外,使用的时候如果不指定具体size,如:padding=2,则是每一维度都为size是2的padding,也就是padding=(2,2,2);如果指定每一维的padding的话则有就是指定的size,如:padding=(3,2,1),则是分别是在三个维度上有3,2,1三种不同的padding,另外kernelstride也是如此

使用样例:

import torch
import torch.nn as nn

# Sample intput | 随机输入
net_input = torch.randn(32, 3, 10, 224, 224)

# With square kernels and equal stride | 所有维度同一个参数配置
conv = nn.Conv3d(3, 64, kernel_size=3, stride=2, padding=1)
net_output = conv(net_input)
print(net_output.shape)  # shape=[32, 64, 5, 112, 112] | 相当于每一个维度上的卷积核大小都是3,步长都是2,pad都是1

# non-square kernels and unequal stride and with padding | 每一维度不同参数配置
conv = nn.Conv3d(3, 64, (2, 3, 3), stride=(1, 2, 2), padding=(0, 1, 1))
net_output = conv(net_input)
print(net_output.shape) # shape=[32, 64, 9, 112, 112]

pytorch中3D的卷积使用还可以参考这个C3D的model:
model传送门

pytorch官方文档:
官方文档传送门

你可能感兴趣的:(pytorch,3dconv,基础函数,pytorch)