pred = torch.zeros(y_test.shape) index = 0 test_loader = torch.utils.data.DataLoader(torch.utils.data.TensorDataset(x_test, y_test), batch_size=1, shuffle=False) with torch.no_grad(): for x, y in test_loader: test_l2 = 0 x, y = x.cuda(), y.cuda() out = model(x) out = y_normalizer.decode(out) pred[index] = out test_l2 += myloss(out.view(1, -1), y.view(1, -1)).item() print(index, test_l2) index = index + 1
时间: 2024-01-17 19:04:25 浏览: 64
句法元素与上下文模型区间-西门子 电子式软启动器3rw34用户指导手册
这段代码中,首先创建了一个全零的 Tensor `pred`,其形状与 `y_test` 相同。然后使用 PyTorch 中的 `DataLoader` 将测试集数据 `x_test` 和 `y_test` 封装成一个数据集,并指定批次大小为 1,不打乱数据。`with torch.no_grad()` 表示在推理时不需要进行梯度计算。
接下来的循环中,对于每一个输入数据 `x` 和目标数据 `y`,首先将其转移到 GPU 上进行推理,并使用 `y_normalizer` 对输出进行反归一化(即对输出数据进行反归一化,将其还原为原始数据范围内的值)。然后将反归一化后的输出数据保存到 `pred` 中,同时计算该数据的测试误差并打印在屏幕上。
最后,将循环变量 `index` 加 1,继续处理下一个数据。经过整个循环后,`pred` 中保存了所有测试数据的模型预测值,`index` 的值为测试数据个数。
阅读全文