pytorch训练模型时dataloader报错“default_collate: batch must contain tensors, numpy arrays, numbers, dicts ”

问题

pytorch跑的时候报了这个:

TypeError
default_collate: batch must contain tensors, numpy arrays, numbers, dicts or lists; found object

分析

  • 代码过程
    先继承 torch.utils.data.Dataset 类写一个子类,然后 init 一个 torch.utils.data.DataLoader 对象

结果在调用的时候:

for x, y in trainloader:
    print(x.shape)
    print(y.shape)
    break

TypeError
default_collate: batch must contain tensors, numpy arrays, numbers, dicts or lists; found object

torch.utils.data.Dataset.__getitem__下面写的是返回numpy数组:

torch.utils.data.Dataset.__getitem__ 下的返回部分
number_info_array, label_info 都是 ndarray

if self.mode != 'test':
	label_info  = currrent_Series[17:-1].values 
	return number_info_array, label_info
else:
	return number_info_array

打印 number_info_array, label_info都是 ndarray
但其对应的dtype=object!!!

解决方式

这个数组里边的 dtype 都是 object ,想起来之前在这个数组里边存过 str, 怪不得现在是 object

解决方式:手动改类型
array.astype(np.float32)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值