您写错了,请仔细阅读我给您的训练代码内容:非常抱歉,之前的回答仍然有误。非常抱歉给你带来困扰。根据您的训练代码,以下是重新编写的测试代码:

import torch
import torch.nn.functional as F
import torch.nn as nn

# 创建网络实例
class MyNetwork(nn.Module):
    def __init__(self):
        super(MyNetwork, self).__init__()
        self.flatten = nn.Flatten()
        self.fc = nn.Linear(339 * 256, 4)

    def forward(self, x):
        x = self.flatten(x)
        x = self.fc(x)
        return x

# 加载保存的网络参数
network = MyNetwork()
network.load_state_dict(torch.load('final_model.pt'))

# 读取测试数据
test_data = torch.load('test_data.pt')

# 将测试数据转换为张量
test_tensors = [torch.tensor(tensor) for tensor in test_data]

# 在测试集上进行预测
network.eval()
with torch.no_grad():
    predictions = []
    for test_input_tensor in test_tensors:
        output = network(test_input_tensor.unsqueeze(0))
        prediction = torch.argmax(output)
        predictions.append(prediction.item())

# 打印预测结果
print(predictions)

在这段代码中,我们重新定义了网络结构 'MyNetwork',并加载了保存的网络参数。

接下来,我们读取测试数据,使用 'torch.load()' 函数从保存的.pt文件中加载测试数据,并将其存储在变量 'test_data' 中。

然后,我们将测试数据转换为张量,使用列表推导式将 'test_data' 中的每个元素转换为张量,并将这些张量存储在 'test_tensors' 列表中。

在测试阶段,我们将网络设置为评估模式,并使用 'torch.no_grad()' 上下文管理器关闭梯度计算。

在每个测试输入张量 'test_input_tensor' 上进行预测,通过调用 'network(test_input_tensor.unsqueeze(0))' 对输入进行前向传播,得到预测输出张量 'output'。使用 'torch.argmax(output)' 找到输出张量中具有最大值的索引,即预测结果。将预测结果转换为整数,并将其添加到 'predictions' 列表中。

最后,我们打印预测结果,通过 'print(predictions)' 打印预测结果列表。

非常抱歉之前的错误造成的困扰。希望这次的回答能够正确解决问题。如果还有其他问题,请随时提问。

PyTorch 测试代码:使用预训练模型进行预测

原文地址: http://www.cveoy.top/t/topic/3AW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录