从左到右,从上到下
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 = torch.tensor([[1,2,1],
[0,1,0],
[2,1,0]])
print(input.shape)
print(kernel.shape)
结果:没有通道
进行尺寸变换
卷积时,需要将图像转换为四维来表示
#进行尺寸变换
input = torch.reshape(input,(1,1,5,5))
kernel = torch.reshape(kernel,(1,1,3,3))
结果:batch,channel,h, w
import torch.nn.functional as F
#stride为1
output = F.conv2d(input,kernel,stride=1)
print(output)
#stride为2
output = F.conv2d(input,kernel,stride=2)
print(output)
结果:
padding:默认为0
上下左右进行扩充,默认为0
'''padding'''
output3 = F.conv2d(input,kernel,stride=1,padding=1)
print(output3)
结果
完整代码
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))
kernel = torch.reshape(kernel,(1,1,3,3))
#打印形状
print(input.shape)
print(kernel.shape)
#stride为1
output = F.conv2d(input,kernel,stride=1)
print(output)
#stride为2
output = F.conv2d(input,kernel,stride=2)
print(output)
'''padding'''
output3 = F.conv2d(input,kernel,stride=1,padding=1)
print(output3)