我正在寻找一种将两个数据集连接到一个的方法,以便可以在一个循环中对其进行训练。然而,批次不允许在数据集之间混合。在以下示例中,批次应仅在 1 到 10 和 41 到 50 之间:
import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader, ConcatDataset
df1 = pd.DataFrame(list(range(1,11)))
df2 = pd.DataFrame(list(range(41,51)))
class testset(Dataset):
def __init__(self,data):
self.data = data
def __len__(self):
return len(self.data)
def __getitem__(self, index):
return self.data[0][index]
testdataset1 = testset(df1)
testdataset2 = testset(df2)
datasets = []
datasets.append(testdataset1)
datasets.append(testdataset2)
concat_dataset = ConcatDataset(datasets)
loader = DataLoader(
concat_dataset,
shuffle=False,
num_workers=0,
batch_size=3
)
for data in loader:
print(data)
张量([1, 2, 3])
张量([4, 5, 6])
张量([7, 8, 9])
tensor([10, 41, 42]) ← 那不应该存在
张量([43, 44, 45])
张量([46, 47, 48])
张量([49, 50])
在实际情况中,我将两个时间序列组合在一起,其中两个数据集的值分批重叠会导致一些麻烦……</p>
这不应该是一个尽管如此,对吧?