Ich versuche, mehrere torch.utils.data.DataLoader
s zu verwenden, um Datensätze zu erstellen, auf die verschiedene Transformationen angewendet werden. Derzeit ist mein Code grobPyTorch DataLoader
d_transforms = [
transforms.RandomHorizontalFlip(),
# Some other transforms...
]
loaders = []
for i in range(len(d_transforms)):
dataset = datasets.MNIST('./data',
train=train,
download=True,
transform=d_transforms[i]
loaders.append(
DataLoader(dataset,
shuffle=True,
pin_memory=True,
num_workers=1)
)
Dies funktioniert, aber es ist extrem langsam. kernprof zeigt, dass fast die ganze Zeit in meinem Code auf den Leitungen wie
x, y = next(iter(train_loaders[i]))
ausgegeben Ich vermute, dass dies auf die Tatsache zurückzuführen ist, dass ich mehrere Instanzen von DataLoader
, jede mit ihren eigenen Arbeitern, bin mit der versucht, um die gleichen Datendateien zu lesen.
Meine Frage ist, was ist ein besserer Weg, dies zu tun? Idealerweise würde ich torch.utils.data.DataSet
von der Unterklasse torch.utils.data.DataSet
abziehen und die Transformation angeben, die ich anwenden möchte beim Stichprobenverfahren, aber dies scheint nicht möglich zu sein, weil __getitem__
Argumente nicht entgegennehmen kann.
Ja, wenn Sie einen vorschlagen könnten, der großartig wäre. Wie gesagt, ein besserer Weg ist das, wonach ich suche. – Coolness
Ich versuche, mehrere abgeleitete Datensätze von einem zu erstellen und generalisieren über sie. – Coolness
Ich möchte lieber nicht über die Einzelheiten meiner Arbeit sprechen, noch reicht das Kommentarfeld aus, um es vollständig zu erklären. Ich sehe nicht, wie es für die Frage relevant ist. – Coolness