#P16 卷积操作 Convolution Layers卷积层
torch.nn#torch.nn是对torch.nn.functional的一个封装,更利于使用
torch.nn.functional#更细
#nn_conv.py
import torch
import torch.nn.functional as F#将torch.nn.functional赋予给F,后面调用可以直接用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]])#有几层中括号就是几维矩阵,这里是二维[[]]
#torch.reshape进行尺寸变换,直观上是将shape从2个数变为4个数
input = torch.reshape(input, (1, 1, 5, 5))#输入
kernel = torch.reshape(kernel, (1, 1, 3, 3))#权重,也称为卷积核
print(input.shape)
print(kernel.shape)
output = F.conv2d(input, kernel, stride=1)#stride=1每次移动步进为1,水平移动和竖直移动步进都是1,先水平移动再竖直移动
print(output)
output2 = F.conv2d(input, kernel, stride=2)#stride=2每次移动步进为2,水平移动和竖直移动步进都是1,先水平移动再竖直移动
print(output2)
output3 = F.conv2d(input, kernel, stride=1, padding=1)#padding=1在输入两边和上下填充一行,相当于填充了一圈,默认不进行填充
print(output3)
"""
#运行结果
torch.Size([1, 1, 5, 5])
torch.Size([1, 1, 3, 3])
tensor([[[[10, 12, 12],
[18, 16, 16],
[13, 9, 3]]]])
tensor([[[[10, 12],
[13, 3]]]])
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]]]])
"""
#torch.nn.functional.conv2d附官方网址和说明
#torch.nn.functional.conv2d网址
https://pytorch.org/docs/stable/generated/torch.nn.functional.conv2d.html#torch.nn.functional.conv2d
#torch.nn.functional.conv2d说明
torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) → Tensor
Applies a 2D convolution over an input image composed of several input planes.
This operator supports TensorFloat32.
See Conv2d for details and output shape.
#torch.nn.Conv2d附官方网址和说明
#torch.nn.Conv2d网址
https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html#torch.nn.Conv2d
#torch.nn.Conv2d说明
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)
#torch.nn.functional.conv2d附官方网址和说明
#torch.nn.functional.conv2d网址
https://pytorch.org/docs/stable/generated/torch.nn.functional.conv2d.html#torch.nn.functional.conv2d
#torch.nn.Conv2d附官方网址和说明
#torch.nn.Conv2d网址
https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html#torch.nn.Conv2d