在 PyTorch 中,可以使用 torch.nn.MSELoss()
函数计算均方误差 (Mean Squared Error, MSE) 损失。在每次迭代中,首先将模型的输出和目标值传递给该函数,它将返回一个张量表示损失值。然后,在优化器的帮助下,根据损失值更新神经网络参数以使其更好地拟合数据。具体代码示例如下:
import torch.nn as nn import torch.optim as optim # 定义神经网络模型 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(10, 5) self.fc2 = nn.Linear(5, 1) def forward(self, x): x = nn.functional.relu(self.fc1(x)) x = self.fc2(x) return x # 创建模型实例、损失函数和优化器 net = Net() criterion = nn.MSELoss() optimizer = optim.SGD(net.parameters(), lr=0.01) # 在每次迭代中,计算并反向传播损失 output = net(input_data) loss = criterion(output, target) loss.backward() optimizer.step()
在上面的代码中,nn.MSELoss()
函数计算模型输出 output
和目标值 target
之间的均方误差损失。然后,通过调用 backward()
方法计算梯度,并通过调用优化器的 step()
方法更新模型参数,以最小化损失。
需要注意的是,在使用 nn.MSELoss()
函数时,输入的张量形状必须相同,否则会引发维度不匹配的错误。在实际使用中,通常需要根据具体情况重塑张量形状或使用其他损失函数,以便更好地适应数据和任务。