课堂笔记|课程链接:土堆说卷积操作(可选看)_哔哩哔哩_bilibili
目录
官方文档如何介绍的卷积?
官方文档:torch.nn — PyTorch 2.0 documentation
看看conv2d的功能:torch.nn.functional.conv2d — PyTorch 2.0 documentation
参数如下
根据理论,手算一下卷积操作
对应位置的数相乘加在一起
实践,用代码验证一下计算结果
1.先设置好输入和卷积核
import torch
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
kernel = torch.tensor([[1, 2, 1],
[0, 1, 0],
[2, 1, 0]])
print(input.shape)
print(kernel.shape)
运行结果:
2.在print之前加两行:
input = torch.reshape(input, (1, 1, 5, 5)) # 通道数为1,batch_size为1,数据维度为5×5
kernel = torch.reshape(kernel, (1, 1, 3, 3))
print的运行结果:
3.stride是干嘛的?
进行一次卷积,以stride=1为例
先在最上面import torch.nn.functional as F
,然后在最下面敲
output = F.conv2d(input, kernel, stride=1)
print(output)
运行结果:
可见,与理论一致
如果stride=2呢?
output2 = F.conv2d(input, kernel, stride=2)
print(output2)
运行结果:
tensor([[[[10, 12],
[13, 3]]]])
4.padding是干嘛的?
输入图像四周填充一圈0
跑下代码看看:
output3 = F.conv2d(input, kernel, stride=1, padding=1)
print(output3)
运行结果: