前向传播函数是什么?
什么是前向传播?
前向传播(Forward Propagation)就是神经网络处理输入数据、产生输出的过程。
生活类比
想象一个工厂流水线:
1 2 3 4 5 6 7 8 9 10 11 12 13
| 原材料(输入图像) ↓ 工位1:提取边缘特征 ↓ 工位2:提取纹理特征 ↓ 工位3:提取高级语义 ↓ 质检:压缩特征 ↓ 包装:分类结果 ↓ 成品(预测类别)
|
这个从原材料到成品的整个过程,就是前向传播。
在代码中的体现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| def forward(self, x): """ 前向传播函数 参数: x: 输入张量,形状为 (batch_size, 3, 64, 64) 返回: 输出张量,形状为 (batch_size, num_classes) """ x = self.conv1(x) x = self.conv2(x) x = self.conv3(x) x = self.global_avg_pool(x) x = torch.flatten(x, 1) return self.fc(x)
|
数据流动过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| input_image = torch.randn(1, 3, 64, 64)
output = model(input_image)
|
前向传播 vs 反向传播
1 2 3 4 5 6 7
| 前向传播(Forward): 输入 → 网络 → 输出 用途:预测、推理
反向传播(Backward): 输出 → 计算误差 → 更新参数 用途:训练、优化
|
对比:
1 2 3 4 5 6 7 8
| output = model(input_image) predicted_class = torch.argmax(output, dim=1)
loss = criterion(output, target) loss.backward() optimizer.step()
|