知识点回顾:
- 随机张量的生成:torch.randn函数
- 卷积和池化的计算公式(可以不掌握,会自动计算的)
- pytorch的广播机制:加法和乘法的广播机制
ps:numpy运算也有类似的广播机制,基本一致
一、随机张量生成
# 生成3x224x224的正态分布随机张量
random_tensor = torch.randn(3, 224, 224)
# 生成5x5的0-1均匀分布随机张量
uniform_tensor = torch.rand(5, 5)
二、卷积层定义示例
# 输入通道3,输出通道64,卷积核3x3
conv = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1)
# 最大池化层2x2
pool = nn.MaxPool2d(2, 2)
# 自动计算输出尺寸
print(conv(torch.randn(1,3,224,224)).shape) # 输出: torch.Size([1,64,224,224])
三、广播机制示例
A = torch.rand(3, 1, 4) # shape (3,1,4)
B = torch.rand( 2,4) # shape (2,4)
C = A + B # 广播后shape (3,2,4)
D = A * B[:, None,:] # 显式扩展维度# 广播规则验证
print(A.shape, " + ", B.shape, " => ", C.shape)
# 输出: torch.Size([3, 1, 4]) + torch.Size([2, 4]) => torch.Size([3, 2, 4])
关键点说明:
1. torch.randn 生成正态分布张量, torch.rand 生成均匀分布
2. 卷积参数自动计算保持空间维度
3. 广播机制维度对齐规则与NumPy一致
4. 显式维度扩展可用 None / unsqueeze 实现