Python 将Pytorch数据集转换为从每个类中至少采样一个点的装入器/采样器的有效方法

Python 将Pytorch数据集转换为从每个类中至少采样一个点的装入器/采样器的有效方法,python,pytorch,dataset,dataloader,Python,Pytorch,Dataset,Dataloader,我正试图想出一种快速有效的方法,将Pytorch数据集转换为至少对每个类中的一个进行采样的采样器。到目前为止,我已经按顺序遍历了Pytorch数据集,并为每个类创建了一个2D张量(Batch x Feature),然后返回每个张量的随机IDX,但这相当慢,并且没有利用数据加载器或采样器。我正在想办法把它安装到装载机或采样器中,以加快速度 目标: 因此,每一批抽样的样本都应该至少有一个代表每一类的样本,并且可以保证给采样器的批次大小将远远大于类别的数量(批次大小至少是类别的2倍)。理想情况下,每个

我正试图想出一种快速有效的方法,将Pytorch数据集转换为至少对每个类中的一个进行采样的采样器。到目前为止,我已经按顺序遍历了Pytorch数据集,并为每个类创建了一个2D张量(Batch x Feature),然后返回每个张量的随机IDX,但这相当慢,并且没有利用数据加载器或采样器。我正在想办法把它安装到装载机或采样器中,以加快速度

目标:

因此,每一批抽样的样本都应该至少有一个代表每一类的样本,并且可以保证给采样器的批次大小将远远大于类别的数量(批次大小至少是类别的2倍)。理想情况下,每个批次不应进行替换取样,但可以在不同批次中取样一个点。

您能进一步解释一下您的意思吗?您需要一个采样器,确保每个类中至少有一个被采样,但每个类中有一个什么?每时代?每批?如果每个批次至少有一个类,那么如果批次大小为1呢?或者更一般地说,如果批量小于类的数量,该怎么办?我已经更新了这个问题