deep-learning - 如何通过一次操作合并两个 torch.utils.data 数据加载器

标签 deep-learning pytorch dataloader

我有两个数据加载器,我想在不重新定义数据集的情况下合并它们,在我的例子中是 train_dataset 和 val_dataset。

train_loader = DataLoader(train_dataset, batch_size = 512, drop_last=True,shuffle=True)
val_loader = DataLoader(val_dataset, batch_size = 512, drop_last=False)

想要的结果:

train_loader = train_loader + val_loader 

最佳答案

数据加载器是迭代器,您可以实现一个返回迭代器的函数,该迭代器产生数据加载器的内容,一个数据加载器接一个。

给定多个迭代器 itrs,它将迭代每个迭代器,然后依次迭代每个迭代器,一次产生一个批处理。一个可能的实现将很简单:

def itr_merge(*itrs):
    for itr in itrs:
        for v in itr:
            yield v

这是一个用法示例:

>>> dl1 = DataLoader(TensorDataset(torch.zeros(5, 1)), batch_size=2, drop_last=True)
>>> dl2 = DataLoader(TensorDataset(torch.ones(10, 1)), batch_size=2)

>>> for x in itr_merge(dl1, dl2):
>>>   print(x)
[tensor([[0.], [0.]])]
[tensor([[0.], [0.]])]
[tensor([[1.], [1.]])]
[tensor([[1.], [1.]])]
[tensor([[1.], [1.]])]
[tensor([[1.], [1.]])]
[tensor([[1.], [1.]])]

关于deep-learning - 如何通过一次操作合并两个 torch.utils.data 数据加载器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65621414/

相关文章:

python - 有没有办法检查python中两个完整句子之间的相似性?

pytorch - 可以在 Pytorch nn.Sequential() 中添加条件

python - pytorch中两个一维信号之间的可微卷积

python - 在 PyTorch 中沿给定轴进行洗牌

numpy - 在pytorch中加载多个.npy文件(大小> 10GB)

python - 在 Keras 中修改图层权重

machine-learning - 连接无输出的 Keras 模型

machine-learning - 在 Caffe 中创建新层

machine-learning - pytorch中的自定义交叉熵损失

javascript - 如何使用数据加载器?