知识点回顾:
1.随机张量的生成:torch.randn函数
2.卷积和池化的计算公式(可以不掌握,会自动计算的)
3.pytorch的广播机制:加法和乘法的广播机制
ps:numpy运算也有类似的广播机制,基本一致
作业:自己多借助ai举几个例子帮助自己理解即可
import torch
# 生成一个2x3的随机张量,元素来自标准正态分布
a = torch.randn(2, 3)
print("随机张量a:\n", a)
# 生成一个3维随机张量,形状为(2,2,3)
b = torch.randn(2, 2, 3)
print("\n3维随机张量b:\n", b)
import torch.nn as nn
# 输入张量 (batch_size=1, channels=1, height=5, width=5)
input = torch.randn(1, 1, 5, 5)
# 卷积层示例
conv = nn.Conv2d(1, 1, kernel_size=3, stride=1, padding=0)
output = conv(input)
print(f"\n卷积前形状: {input.shape}, 卷积后形状: {output.shape}")
# 最大池化示例
pool = nn.MaxPool2d(kernel_size=2, stride=2)
output = pool(input)
print(f"池化前形状: {input.shape}, 池化后形状: {output.shape}")
# 示例1:张量与标量
a = torch.tensor([1.0, 2.0, 3.0])
b = 2.0
print("\n张量加标量:", a + b) # [3.0, 4.0, 5.0]
# 示例2:不同形状张量
c = torch.tensor([[1, 2, 3], [4, 5, 6]]) # 形状(2,3)
d = torch.tensor([10, 20, 30]) # 形状(3,)
print("\n不同形状张量相加:\n", c + d) # [[11,22,33], [14,25,36]]
# 示例3:乘法广播
e = torch.tensor([[1], [2], [3]]) # 形状(3,1)
f = torch.tensor([4, 5]) # 形状(2,)
print("\n乘法广播结果:\n", e * f) # [[4,5], [8,10], [12,15]]
@浙大疏锦行