You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch加载.pt文件预测CSV单条数据时出现AttributeError问题求助

问题分析与解决

错误根源

你在预测代码里直接对TensorDataset对象调用了unsqueeze()方法,但TensorDataset只是个数据集容器,本身没有张量的方法——只有它内部包裹的张量才能用unsqueeze()。

具体修正步骤

1. 调整单条数据的处理逻辑

把对TensorDataset的操作改成提取内部张量后再处理:

  • 错误写法(触发报错):
dataset = TensorDataset(data_tensor)
dataset = dataset.unsqueeze(0)  # 这里把数据集当成张量操作,必然报错
  • 正确写法:
dataset = TensorDataset(data_tensor)
# 取出数据集里的特征张量,再补batch维度
input_tensor = dataset[0][0].unsqueeze(0)

2. 完整可运行的预测代码示例

import torch
import pandas as pd
from torch.utils.data import TensorDataset

# 加载训练好的模型
model = torch.load('best3.pt')
model.eval()  # 切换到评估模式,关闭训练专属层

# 加载单条无标签数据
data = pd.read_csv('onedata.csv').values
data_tensor = torch.tensor(data, dtype=torch.float32)

# 处理数据:提取张量并补batch维度(模型默认接收批量输入)
dataset = TensorDataset(data_tensor)
input_tensor = dataset[0][0].unsqueeze(0)

# 执行预测
with torch.no_grad():  # 关闭梯度计算,节省资源
    output = model(input_tensor)
    pred_class = torch.argmax(output, dim=1).item()

print(f"预测类别:{pred_class}")

3. 额外注意点

  • 确保单条数据的特征数量和训练集完全一致,不然模型会报错维度不匹配
  • 数据类型要和训练时统一(比如都用float32)
  • 模型加载后必须加model.eval(),避免dropout、BatchNorm等层干扰预测结果

内容的提问来源于stack exchange,提问作者RobertLink

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:10:44