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

构建PyTorch数据集时,为何test_data报'int' object is not callable错误?

问题原因分析

你的代码里存在两个关键问题,其中拼写错误直接触发了报错:

1. 变量名拼写错误(核心报错原因)

在拆分数据集的代码行中,你把test_label拼写成了tets_label:

train_data, test_data, train_label, tets_label = train_test_split(T_data, T_label, test_size= .2)

后续创建测试数据集时,你调用了未定义的test_label:

test_data  = TensorDataset(test_data, test_label)

如果你的运行环境中之前恰好存在一个名为test_label的整数变量,就会触发"int object is not callable"错误——因为TensorDataset需要接收张量类型的输入,而你传入了一个整数,Python会尝试将其当作可调用对象处理,进而报错。

2. 冗余的初始数据(非报错但可优化)

你初始化的data = np.array([[1,1]])和label = np.array([2])会被后续循环的内容重复添加(循环范围包含了i=1的情况),可以直接初始化空数组避免数据冗余:

data = np.empty((0, 2), int)
label = np.empty((0,), int)
修正后的代码
import numpy as np
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.utils.data import DataLoader, TensorDataset
from sklearn.model_selection import train_test_split

# 初始化空数组避免冗余
data = np.empty((0, 2), int)
label = np.empty((0,), int)

for i in range(-5000, 5001, 1):
    data = np.append(data, [[i, i]], axis=0)
    label = np.append(label, [i + i])

# 转换为张量
T_data = torch.tensor(data).float()
T_label = torch.tensor(label).long()

# 修正变量名拼写错误
train_data, test_data, train_label, test_label = train_test_split(T_data, T_label, test_size=.2)

# 转换为PyTorch数据集
train_data = TensorDataset(train_data, train_label)
test_data = TensorDataset(test_data, test_label)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:36:07