torch.nn相当于把齿轮封装好的,直接提供给我们的方向盘
torch.nn.functional相当于开车时齿轮的运转
TORCH.NN.FUNCTIONAL.CONV2D
torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) → Tensor
代码实战:
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
output1 = F.conv2d(input, kernel, stride=1)
print(output1)
# stride = 2
output2 = F.conv2d(input, kernel, stride=2)
print(output2)
# padding = 1
output3 = F.conv2d(input, kernel, padding=1)
print(output3)
# padding = 2
output4 = F.conv2d(input, kernel, padding=2)
print(output4)
stride=1时输出:
torch.Size([1, 1, 5, 5])
torch.Size([1, 1, 3, 3])
tensor([[[[10, 12, 12],
[18, 16, 16],
[13, 9, 3]]]])
stride=2时输出:
tensor([[[[10, 12],
[13, 3]]]])
padding=1时输出:
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]]]])
padding=2时输出:
tensor([[[[ 0, 1, 4, 4, 3, 7, 2],
[ 0, 1, 3, 4, 10, 8, 2],
[ 1, 5, 10, 12, 12, 6, 1],
[ 0, 7, 18, 16, 16, 8, 3],
[ 1, 11, 13, 9, 3, 4, 2],
[ 5, 14, 13, 9, 7, 4, 1],
[ 2, 5, 4, 2, 3, 3, 1]]]])