我已经多次使用 pytorch 数据加载器的 shuffle 选项。但我想知道这种洗牌何时发生以及它是否在迭代期间动态执行。以下面的代码为例:
namesDataset = NamesDataset()
namesTrainLoader = DataLoader(namesDataset, batch_size=16, shuffle=True)
for batch_data in namesTrainLoader:
print(batch_data)
当我们定义“namesTrainLoader”时,这是否意味着洗牌已经完成,接下来的迭代将基于固定的数据顺序?定义 namesTrainLoader 后,for 循环会不会有随机性?
我试图用一些特殊值替换一半的“batch_data”:
for batch_data in namesTrainLoader:
batch_data[:8] = special_val
pre = model(batch_data)
假设会有无限个 epoch,“模型”最终会看到“namesTrainLoader”中的所有数据吗?还是“namesTrainLoader”的一半数据实际上丢失给了“model”?