Pytorch Lightning limit_val_batches 和 val_check_interval 行为
Pytorch Lightning limit_val_batches and val_check_interval behavior
我正在设置 limit_val_batches=10
和 val_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 DataLoader
s 决定
def *_dataloder(...):
return DataLoader(dataset, shuffle=..., sampler=..., batch_sampler=...)
如果这些函数返回的数据加载器没有 shuffle=True
或任何随机的 Sampler
,则 批次将相同.
就 --limit_val_batches=N
而言,它首先从底层数据加载器获取 N
批次。 Lightning 本身不做任何数据选择。已由核心开发人员确认 here。
我正在设置 limit_val_batches=10
和 val_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)由
DataLoader
s 决定
def *_dataloder(...):
return DataLoader(dataset, shuffle=..., sampler=..., batch_sampler=...)
如果这些函数返回的数据加载器没有 shuffle=True
或任何随机的 Sampler
,则 批次将相同.
就 --limit_val_batches=N
而言,它首先从底层数据加载器获取 N
批次。 Lightning 本身不做任何数据选择。已由核心开发人员确认 here。