构建流式读取DataLoader
的方法可以参考:pytorch构造可迭代的DataLoader,动态流式读取数据源,不担心内存炸裂(pytorch Data学习三)
使用如下方法构造DataLoader
,如果num_workers
设置为N,就会在每个for data in data_source
循环内一共遍历N * dataset数据集的全部数据
次。
from step_1_parama_test import MyIterableTrainDataset
import torch.utils.data as Data
if __name__ == '__main__':
data_source = Data.DataLoader(
dataset=dataset, # 封装进Data.TensorDataset()类的数据,可以为任意维度
batch_size=30, # 每块的大小
num_workers=6, # 多进程(multiprocess)来读数据
drop_last=True
)
for data in data_source: # do not need the labels
pass
# 等等其他操作.....
所以:
如果IterableDataset被封装在Data.DataLoader中,且num_workers=6,每执行1次epochs,其实是迭代了6次全部数据集…