dataset的数据长度问题
- 调用构建的
my_dataset.__len__()
获取的是数据的原始长度,比如一共有1000张图像,返回的就是1000 - 使用
len(my_dataloader)
返回的是batch的数量,比如1000张图像,使用batchsize为8,那么返回的就是250.
numpy.squeeze返回值类型
对ndarray
使用squeeze之后,其返回值是tuple类型,如果将这个类型的数据返回给pytorch的__getitem__
方法,则最后dataset返回的数据类型为list,而不是一个torch.Tensor
数据类型。
只有将ndarray
数据类型返回给__getitem__
,最后dataloader返回的数据类型才能自动转为torch.Tensor
;
此外,函数返回值是一个ndarray和一个[]类型时,如果只用一个参数接收,那么会两个参数总体变成一个tuple。道理也非常简单,就是函数的多个返回值是个tuple中的多个元素。