Search code examples
pythonpytorchdataloader

Why having this error just for test_data?


I'm trying to build a simple dtaset to work with, however, pytorch gives an error that I can't understand. Why?

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.array([[1,1]])
label = np.array([2])

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


# conver to tensor

T_data  = torch.tensor(data).float()
T_label = torch.tensor(label).long()

# split data

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

# convert into Pytorch dataset

train_data = TensorDataset(train_data, train_label)
test_data  = TensorDataset(test_data, test_label)


for test_data it shows 'int' object is not callable, what is the problem?


Solution

  • Even though you didn't post the traceback but it looks like the error you are encountering is caused by a typo in the variable name tets_label. The correct variable name should be test_label.

    Here is the corrected code:

    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.array([[1,1]])
    label = np.array([2])
    
    for i in range(-5000,5001,1):
      data = np.append(data, [[i,i]], axis=0)
      label = np.append(label, [i+i])
    
    
    # conver to tensor
    
    T_data  = torch.tensor(data).float()
    T_label = torch.tensor(label).long()
    
    # split data
    
    train_data, test_data, train_label, test_label = train_test_split(T_data, T_label, test_size= .2)
    
    # convert into Pytorch dataset
    
    train_data = TensorDataset(train_data, train_label)
    test_data  = TensorDataset(test_data, test_label)