PyTorch快速入门教程【小土堆】之土说卷积操作
视频地址土堆说卷积操作(可选看)_哔哩哔哩_bilibili
跟神经网路相关的工具都放在torch.nn模块里面torch.nn — PyTorch 2.5 documentation
nn.Conv1d | 在由几个输入平面组成的输入信号上应用一维卷积。 |
nn.Conv2d | 在由几个输入平面组成的输入信号上应用二维卷积。 |
nn.Conv3d | 在由几个输入平面组成的输入信号上应用三维卷积。 |
nn.ConvTranspose1d | 在由多个输入平面组成的输入图像上应用一维转置卷积算子。 |
nn.ConvTranspose2d | 在由多个输入平面组成的输入图像上应用二维转置卷积算子。 |
nn.ConvTranspose3d | 在由多个输入平面组成的输入图像上应用3D转置卷积算子。 |
import torch
import torch.nn.functional as F
input = torch.tensor([[1, 2, 0, 3, 1],
[0, 1, 2, 3, 1],
[1, 2, 1, 0, 0],
[5, 2, 3, 1, 1],
[2, 1, 0, 1, 1]])
kernel = torch.tensor([[1, 2, 1],
[0, 1, 0],
[2, 1, 0]])
input = torch.reshape(input, (1, 1, 5, 5)) #把input尺寸从([5,5])变为([1,1,5,5])
kernel = torch.reshape(kernel, (1, 1, 3, 3)) #把kernel尺寸从([3,3])变为([1,1,3,3])
output = F.conv2d(input, kernel, stride=1)
print(output)
# 结果为
# tensor([[[[10, 12, 12],
# [18, 16, 16],
# [13, 9, 3]]]])
output2 = F.conv2d(input, kernel, stride=2)
print(output2)
# tensor([[[[10, 12],
# [13, 3]]]])
output3 = F.conv2d(input, kernel, stride=1, padding=1) # 步长为1,边缘加一圈0
print(output3)
# tensor([[[[ 1, 3, 4, 10, 8],
# [ 5, 10, 12, 12, 6],
# [ 7, 18, 16, 16, 8],
# [11, 13, 9, 3, 4],
# [14, 13, 9, 7, 4]]]])