Dav*_*ini 5 python pytorch pytorch-lightning
TL;DR:在 on_train_epoch_start 期间,我想获取所有训练数据上的模型输出,作为一些预训练计算的一部分。我问的是,闪电友好的方法是什么。
这是一个奇怪的问题。
在我的项目中,每 10 个时期我都会选择完整训练数据的一个子集,并仅在该子集上进行训练。在计算要使用哪个子集的过程中,我计算了训练数据集中每个数据点的模型输出。
我的问题是,在 pytorch lighting 中做到这一点的最佳方法是什么?目前我有一个带有on_train_epoch_start钩子的回调。在此挂钩期间,回调从生成自己的数据加载器trainer.datamodule.train_dataloader(),并手动迭代数据加载器,计算模型输出。这并不理想,对吧?
这让我遇到了 pytorch lighting 的问题。例如,当在 GPU 上训练时,我收到错误,因为我的回调使用其自己的数据加载器,而不是训练器的train_dataloader,因此它不在 GPU 上。但是,我无法使用 trainer's train_dataloader,因为在我的回调选择其子集之后,它将 trainer's 更改train_dataloader为该子集,而不是完整的数据集。
我想我有两个主要问题: