最初,数据加载器是用某些示例创建的。在训练过程中,我需要更换一个数据采集器中的样本。如何把它替换成数据采集器。
train_dataloader = DataLoader(train_data, sampler=train_sampler, batch_size=batch_size)
for sample,label in train_dataloader:
prediction of model
select misclassified samples and change them in train_dataloader but how to change sample in train_dataloader在培训过程中,需要对错误分类的样本进行修改。那么如何在train_dataloader中替换一个示例呢?
发布于 2021-05-27 04:02:02
通常,您将通过创建继承torch.utils.data.Dataset的类并在__getitem__方法中进行处理,从而在示例级别处理数据。
from torch.utils.data import Dataset
class MyDataset(Dataset):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def __getitem__(self, i):
# Call the __getitem__ from Dataset class
sample = super().__getitem__(i)
# ...Do some processing on the sample here
return sample
train_data = MyDataset()
train_dataloader = DataLoader(train_data, sampler=train_sampler, batch_size=batch_size)可以使用collate_fn参数torch.utils.data.DataLoader来指定处理批处理的自定义函数。
from torch.utils.data import Dataset, DataLoader
def collate_fn(samples):
# samples is a list of samples you get from the __getitem__ function of your torch.utils.data.Dataset instance
# You can write here whatever processing you need before stacking samples into one batch of data
batch = torch.stack(samples, dim=0)
return batch
train_data = Dataset()
train_dataloader = DataLoader(train_data, sampler=train_sampler, batch_size=batch_size, collate_fn=collate_fn)https://datascience.stackexchange.com/questions/94943
复制相似问题