nn.Conv2d与nn.Conv3d介绍

nn.Conv2d

1)输入的维度为:

2)输出的维度为:

其中,Cout是由参数out_channels((int) – 卷积产生的通道数)决定。

Hout和Wout计算如下:

 3)在池化层的计算:

也可以用上述公式,但是池化层一般pad为0,所以公式简化如下:

 1.torch.nn.MaxPool2d

2.torch.nn.AvgPool2d

 3.nn.AdaptiveAvgPool2d(output_size) 

自身适应平均池化,参数就是输出的大小,其他的参数如步长等都是根据output_size参数自行制定。

nn.Conv3d

举例说明:Conv2D对720×720的3通道图像进行卷积,batch_size设为64,则输入向量的维度为 [64, 3, 720, 720], Conv3D对分辨率为720×720的视频(假设为连续5帧)进行卷积,batch_size设为64,则输入向量的维度为 [64, 3, 5, 720, 720]

1)维度计算:

2)例子:

import torch.nn as nn
import torch
 
# 创建一个卷积层,填充一圈0
conv1 = nn.Conv3d(in_channels=3,
                  out_channels=32,
                  kernel_size=(3, 3, 3),
                  stride=(2, 2, 2),
                  padding=1)
 
# 创建一个卷积层,无填充
conv2 = nn.Conv3d(in_channels=3,
                  out_channels=32,
                  kernel_size=(3, 3, 3),
                  stride=(2, 2, 2),
                  padding=0)
 
# 创建一个维度为[64, 3, 7, 5, 5]的tensor
x = torch.rand(64, 3, 7, 5, 5)  
 
# 进行卷积
y1 = conv1(x)
print(y1.shape) # [64, 32, 4, 3, 3]
 
# 进行卷积
y2 = conv2(x)
print(y2.shape) # [64, 32, 3, 2, 2]

Supongo que te gusta

Origin blog.csdn.net/zhang2362167998/article/details/129162469
Recomendado
Clasificación