b站的up主刘二大人的《PyTorch深度学习实践》P10 笔记+代码,视频链接。
目录
二、PPT上4个简单代码:维度、padding、stride、maxpooling
一、Conv2d
、MaxPool2d
和 Linear
1. torch.nn.Conv2d
介绍:用于对二维输入(如图像)执行卷积操作。
主要参数:
- in_channels: 输入特征图的通道数(如 RGB 图像为 3,灰度图像为 1)。
- out_channels: 卷积层输出特征图的通道数,通常由卷积核的数量决定。
- kernel_size: 卷积核的大小,可以是单个整数(表示正方形)或元组(表示长方形),如
(3, 3)
。 - stride: 卷积核移动的步幅,默认值为
1
。 - padding: 输入特征图的边缘填充,默认值为
0
。可以是单个整数或元组,影响输出尺寸。 - dilation: 卷积核元素之间的间距,默认值为
1
。 - groups: 控制输入通道与输出通道之间的连接,默认值为
1
。
使用示例:
conv_layer = torch.nn.Conv2d(in_channels=1,
out_channels=16,
kernel_size=3,
stride=1,
padding=1)
2. torch.nn.MaxPool2d
介绍:用于在二维输入上执行最大池化操作。
主要参数:
- kernel_size: 池化窗口的大小,可以是单个整数或元组。
- stride: 池化窗口的步幅,默认值为
kernel_size
。 - padding: 输入特征图的边缘填充,默认值为
0
。
使用示例:
max_pooling = torch.nn.MaxPool2d(kernel_size=2, stride=2)
3. torch.nn.Linear
介绍:用于执行全连接层(线性变换),将输入张量映射到输出张量。
主要参数:
- in_features: 输入特征的数量。
- out_features: 输出特征的数量。
- bias: 是否添加偏置项,默认值为
True
。
使用示例:
linear_layer = torch.nn.Linear(in_features=128, out_features=64)
二、PPT上4个简单代码:维度、padding、stride、maxpooling
1、维度
import torch
in_channels, out_channels = 5, 10
width, height = 100, 100
kernel_size = 3
batch_size = 1
input = torch.randn(batch_size,
in_channels,
width,
height)
conv_layer = torch.nn.Conv2d(in_channels,
out_channels,
kernel_size=kernel_size)
# 未自定义,卷积核的权重会随机初始化
out_put = conv_layer(input)
print(input.shape) # torch.Size([1, 5, 100, 100])
print(out_put.shape) # torch.Size([1, 10, 98, 98])
print(conv_layer.weight.shape) # torch.Size([10, 5, 3, 3])
2、padding
import torch
input = [3,4,6,5,7,
2,4,6,8,2,
1,6,7,8,4,
9,7,4,6,2,
3,7,5,4,1]
input = torch.tensor(input, dtype=torch.float32).view(1, 1, 5, 5)
conv_layer = torch.nn.Conv2d(1, 1, kernel_size=3, padding=1, bias=False)
# 自定义卷积核权重
kernel = torch.tensor([1,2,3,4,5,6,7,8,9], dtype=torch.float32).view(1, 1, 3, 3)
conv_layer.weight.data = kernel.data
output = conv_layer(input)
print(output)
输出
tensor([[[[ 91., 168., 224., 215., 127.],
[114., 211., 2