Pytorch Lightning limit_val_batches 和 val_check_interval 行为

Pytorch Lightning limit_val_batches and val_check_interval behavior

我正在设置 limit_val_batches=10val_check_interval=1000,以便我每 1000 个训练步骤验证 10 个验证批次。是否保证每次调用验证时 Trainer 都会使用相同的 10 个批次?

我尝试搜索 limit_val_batches 的源代码,但无法弄清楚它是如何用于获取验证批次的。

答案与 PyTorch Lightning 及其标志(--limit_val_batches--val_check_interval)没有太大关系。 Lightning 在

中提供的确切数据批次
def *_step(self, batch, ...):
    ...

方法(* 是 training/validation/test)由

返回的底层 PyTorch DataLoaders 决定
def *_dataloder(...):
    return DataLoader(dataset, shuffle=..., sampler=..., batch_sampler=...)

如果这些函数返回的数据加载器没有 shuffle=True 或任何随机的 Sampler,则 批次将相同.

--limit_val_batches=N 而言,它首先从底层数据加载器获取 N 批次。 Lightning 本身不做任何数据选择。已由核心开发人员确认 here