这种情况可能是因为计算机在处理浮点数时的精度不同。我们可以尝试通过设置随机数种子和使用相同的硬件和软件环境来消除这种差异。
下面是一个示例代码:
import torch
import random
# 设置随机数种子,确保结果的一致性
torch.manual_seed(1)
random.seed(1)
# 检查是否可以使用GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 创建模型
model = torch.nn.Linear(10, 1).to(device)
# 定义损失函数和优化器
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# 加载数据
data = torch.randn(100, 10).to(device)
target = torch.randn(100, 1).to(device)
# 训练模型
for epoch in range(100):
# 前向传播
output = model(data)
loss = criterion(output, target)
# 反向传播
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 输出当前的损失值
print("Epoch [{}/{}], Loss: {:.4f}".format(epoch+1, 100, loss.item()))
通过设置随机数种子和使用相同的硬件和软件环境,我们可以最大程度地消除不同计算机上训练PyTorch模型时的差异。