视频地址
卷积操作如下:
看看官方文档里的卷积层的解释~
点击conv2d
,看到解释页面1
解释页面2(是torch.nn.functional里面的,但是平时其实用不到,这次只是作为一个示范更好了解卷积操作)
让我们来实现上述操作吧!
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]])
# 这里要使用reshape是因为卷积函数需要4维的数据,所以要按照它的要求把输入的2维变成4维(升维)
input = torch.reshape(input, (1, 1, 5, 5)) # batch_size, channel, 5×5的大小
kernel = torch.reshape(kernel, (1, 1, 3, 3)) # batch_size, channel, 3×3的大小
print(input.shape)
print(kernel.shape)
output = F.conv2d(input, kernel, stride=1) # 点击ctrl+p查看需要填入的参数
print(output)
输出结果为
D:\Anaconda3\envs\pytorch\python.exe D:/研究生/代码尝试/nn_conv.py
torch.Size([1, 1, 5, 5])
torch.Size([1, 1, 3, 3])
tensor([[[[10, 12, 12],
[18, 16, 16],
[13, 9, 3]]]])
进程已结束,退出代码为 0
可以发现,和ppt里面输出结果一样
加了padding之后
在源代码下面增加
output = F.conv2d(input, kernel, stride=1, padding=1) # 点击ctrl+p查看需要填入的参数
print(output)
输出结果
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]]]])
进程已结束,退出代码为 0
大功告成啦~