PyTorch: Verwendung von DataLoaders für benutzerdefinierte Datasets
Wie die torch.utils.data.Dataset
und torch.utils.data.DataLoader
auf Ihre eigenen Daten (nicht nur die torchvision.datasets
)?
Gibt es eine Möglichkeit, verwenden Sie die eingebaute DataLoaders
die Sie verwenden, auf TorchVisionDatasets
verwendet werden, die auf jeden Datensatz?
InformationsquelleAutor der Frage Sarthak | 2017-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, das ist möglich. Erstellen Sie einfach die Objekte, die von sich aus, z.B.
wo
features
undtargets
sind Tensoren.features
werden 2-D, also eine matrix, wo jede Zeile steht für eine Ausbildung Probe, und dietargets
1-D oder 2-D, je nachdem, ob Sie versuchen, vorherzusagen, ein Skalar oder ein Vektor.Hoffe, das hilft!
BEARBEITEN: Antwort zu @sarthak Frage
Grundsätzlich ja. Wenn Sie ein Objekt erstellen vom Typ
TensorData
dann der Konstruktor untersucht werden, ob die ersten Dimensionen des feature-tensor (das heißt eigentlichdata_tensor
) und die Ziel-tensor (genannttarget_tensor
) die gleiche Länge haben:Allerdings, wenn Sie füttern wollen diese Daten in ein neuronales Netz anschließend, dann müssen Sie vorsichtig sein. Während convolution-Schichten arbeiten, auf Daten wie du, (glaube ich) alle anderen Arten von Schichten zu erwarten sein, die Daten in matrix-form. Also, wenn Sie laufen in ein Problem wie dieses, dann eine einfache Lösung wäre, konvertieren Sie Ihre 4D-Datensatz (gegeben als eine Art von tensor, z.B.
FloatTensor
) in eine matrix mit der Methodeview
. Für Ihre 5000xnxnx3 dataset, würde dies wie folgt Aussehen:(Der Wert
-1
sagt PyTorch, um herauszufinden, die Länge der zweiten dimension automatisch.)InformationsquelleAutor der Antwort pho7
Können Sie dies ganz einfach sein das sich die
data.Dataset
Klasse.Nach der API, alles, was Sie tun müssen, ist die Implementierung von zwei-Funktion:
__getitem__
und__len__
.Können Sie dann wickeln Sie das dataset mit dem DataLoader, wie gezeigt, in der API und in @pho7 's Antwort.
Ich denke, die
ImageFolder
Klasse ist eine Referenz. Siehe code -hier.InformationsquelleAutor der Antwort user3693922