【pytorch】torch.utils.data.TensorDataset()原版与新版的差异

原版代码:

torch_dataset = Data.TensorDataset(data_tensor=x, target_tensor=y)
loader = Data.DataLoader(
    dataset=torch_dataset,      # torch TensorDataset format
    batch_size=BATCH_SIZE,      # mini batch size
    shuffle=True,               # random shuffle for training
    num_workers=2,              # subprocesses for loading data
)

运行报错:

TypeError                                 Traceback (most recent call last)
<ipython-input-19-5bb67537d9eb> in <module>
----> 1 torch_dataset = Data.TensorDataset(data_tensor=x, target_tensor=y)
      2 # 代码修改为:参考https://blog.csdn.net/idwtwt/article/details/86767634
      3 # torch_dataset = Data.TensorDataset(x, y)
      4 loader = Data.DataLoader(
      5     dataset=torch_dataset,      # torch TensorDataset format

TypeError: __init__() got an unexpected keyword argument 'data_tensor'

原因是新版把之前的data_tensor 和target_tensor去掉了,输入变成了可变参数,也就是我们平常使用*args

class TensorDataset(Dataset):
    """Dataset wrapping tensors.
    Each sample will be retrieved by indexing tensors along the first dimension.
    Arguments:
        *tensors (Tensor): tensors that have the same size of the first dimension.
    """
 
    def __init__(self, *tensors):
        assert all(tensors[0].size(0) == tensor.size(0) for tensor in tensors)
        self.tensors = tensors
 
    def __getitem__(self, index):
        return tuple(tensor[index] for tensor in self.tensors)
 
    def __len__(self):
        return self.tensors[0].size(0)

所以新版的使用方法是直接传入参数

# 原版使用方法
torch_dataset = Data.TensorDataset(data_tensor=x, target_tensor=y)

# 新版使用方法
torch_dataset = Data.TensorDataset(x, y)
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值