1 default_collate() 的作用
将对应的元素类型变为 Tensor 类型的数据
使用torch.utils.data.DataLoder() 处理数据后,当数据中有损坏的文件,我们则需要剔除,剔除试用的是filter(function,iteration)来处理,返回一个迭代器对象,我们可以通过list转换为列表的形式。但是送到神经网络中时,我们还是需要是batch的形式
原来的DataLoader处理后的图像就是tensor的形式。具体的可以看该函数,函数中的关键字里有transform,所以我们需要将处理后的数据,在转换为batch的形式,其实就是将列表中中的元素处理为tensor的形式
2 示例
from torch.utils.data.dataloader import default_collate
a = [(0, 1), (2, 3), (4, 5), (6, 7)]
print('a.type:', type(a))
print(a)
b = default_collate(a)
print('b.type:',type(b))
print(b)
c = [[[0 ,1], [2, 3], [4, 5]],
[[6, 7], [8, 9], [10, 11]]]
d = default_collate(c)
print('d.type:',type(d))
print(d)
>>> a.type: <class 'list'>
>>> [(0, 1), (2, 3), (4, 5)]
>>> b.type: <class 'list'>
>>> [tensor([0, 2, 4]), tensor([1, 3, 5])]
>>> d.type: <class 'list'>
>>> [[tensor([0, 6]), tensor([1, 7])], [tensor([2, 8]), tensor([3, 9])], [tensor([ 4, 10]), tensor([ 5, 11])]]
注意它的结果, 是将列表中的元素转换为一个一个的 batch的形式