神经网络python代码后向传播
时间: 2024-10-19 20:01:05 浏览: 12
神经网络的反向传播是一种用于训练深度学习模型的重要算法,它基于梯度下降法来更新网络中的权重,以便最小化损失函数。在Python中,我们可以使用如TensorFlow、PyTorch等库来实现后向传播。下面是一个简单的例子,使用PyTorch来展示反向传播的基本步骤:
```python
import torch
# 假设我们有一个简单的线性回归网络
class LinearModel(torch.nn.Module):
def __init__(self, input_size, output_size):
super(LinearModel, self).__init__()
self.linear = torch.nn.Linear(input_size, output_size)
def forward(self, x):
y_pred = self.linear(x)
return y_pred
# 创建模型实例并初始化权重
model = LinearModel(2, 1)
x = torch.randn((10, 2)) # 输入数据
y_true = torch.randn((10, 1)) # 真实标签
# 假设损失函数是均方误差
loss_fn = torch.nn.MSELoss()
y_pred = model(x)
loss = loss_fn(y_pred, y_true)
# 开启自动微分
with torch.no_grad():
gradients = torch.autograd.grad(loss, model.parameters())
# 反向传播计算每个参数的梯度
for param, grad in zip(model.parameters(), gradients):
print(f"Parameter: {param}, Gradient: {grad}")
# 使用这些梯度调整参数
optimizer = torch.optim.SGD(model.parameters(), lr=0.01) # 使用随机梯度下降优化器
optimizer.step() # 更新权重
阅读全文