[PYTHON] Ich habe versucht, Pytorchs Datensatz zu erklären

Motivation

Es gibt Leute, die Pytorch im Labor benutzen, also zur Erklärung für diese Person

Das Hauptthema - "Warum Sie einen Datensatz benötigen"

Einfacher Code und Beschreibung

dataset.py


import torch
from sklearn.datasets import load_iris

class Dataset(torch.utils.data.Dataset):
    def __init__(self, transform=None):
        self.iris = load_iris() #Iris-Datensatz wird geladen
        self.data = self.iris['data']
        self.label = self.iris['target']
        self.datanum = len(self.label) #Gesamtzahl der Daten
        self.transform = transform #Spezielle Datenverarbeitung

    def __len__(self):
        return self.datanum

    def __getitem__(self, index):
        data = self.data[index]
        label = self.label[index]

        if self.transform:
            data = self.transform(data)

        return data, label

if __name__ == "__main__":
    batch_size = 20
    dataset = Dataset()
    dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True)
    for data in dataloader:
        print("Anzahl der Daten: " + str(len(data[0])))
        print("data: {}".format(data[0]))
        print("Anzahl der Etiketten: " + str(len(data[1])))
        print("label: {}".format(data[1]) + "\n")

Das ist der ganze Code. Ich habe es aus Gründen der Klarheit auf ein Minimum beschränkt.

init ist der Prozess, bei dem die Klasse definiert wird. Diesmal sind es sehr kleine Daten, also habe ich alles in init definiert, Wenn Sie sehr große Daten aus dem Speicher iterieren möchten, geben Sie hier den Pfad usw. an und iterieren Sie mit getitem in der angegebenen Reihenfolge.

len gibt die Gesamtzahl der Daten zurück.

getitem gibt die durch den Index angegebenen Daten zurück. Geben Sie beim Iterieren mit Dataloader die Daten für die später beschriebene Stapelgröße an und geben Sie sie zurück.

Über Dataloader

Übergeben Sie das Dataset, das eine Instanz der Dataset-Klasse ist, als erstes Argument. Für das zweite und dritte Argument entweder Stapelgröße oder Shuffle oder Pass __ (True / False) __. Setzen Sie shuffle auf True, es sei denn, Sie haben einen bestimmten Grund dafür.

Neben für gibt es noch andere Möglichkeiten, den Dataloader zu iterieren, aber hier verwenden wir für. Das obige Programm wird unten ausgeführt.

Anzahl der Daten: 20
data: tensor([[6.8000, 3.0000, 5.5000, 2.1000],
        [6.7000, 3.1000, 5.6000, 2.4000],
        [5.4000, 3.9000, 1.3000, 0.4000],
        [5.5000, 2.4000, 3.7000, 1.0000],
        [5.1000, 3.7000, 1.5000, 0.4000],
        [4.5000, 2.3000, 1.3000, 0.3000],
        [6.6000, 2.9000, 4.6000, 1.3000],
        [6.5000, 3.0000, 5.8000, 2.2000],
        [7.0000, 3.2000, 4.7000, 1.4000],
        [4.4000, 3.2000, 1.3000, 0.2000],
        [5.0000, 3.4000, 1.5000, 0.2000],
        [5.4000, 3.4000, 1.5000, 0.4000],
        [4.9000, 2.4000, 3.3000, 1.0000],
        [6.3000, 3.4000, 5.6000, 2.4000],
        [7.7000, 2.6000, 6.9000, 2.3000],
        [6.2000, 2.8000, 4.8000, 1.8000],
        [6.2000, 3.4000, 5.4000, 2.3000],
        [5.6000, 2.7000, 4.2000, 1.3000],
        [6.1000, 3.0000, 4.9000, 1.8000],
        [6.7000, 3.0000, 5.0000, 1.7000]], dtype=torch.float64)
Anzahl der Etiketten: 20
label: tensor([2, 2, 0, 1, 0, 0, 1, 2, 1, 0, 0, 0, 1, 2, 2, 2, 2, 1, 2, 1],
       dtype=torch.int32)

~~~~~ Unterwegs weggelassen ~~~~~~

Anzahl der Daten: 10
data: tensor([[4.8000, 3.4000, 1.6000, 0.2000],
        [6.1000, 2.8000, 4.7000, 1.2000],
        [5.1000, 3.8000, 1.9000, 0.4000],
        [6.7000, 3.3000, 5.7000, 2.1000],
        [6.4000, 2.9000, 4.3000, 1.3000],
        [7.4000, 2.8000, 6.1000, 1.9000],
        [6.4000, 3.2000, 5.3000, 2.3000],
        [5.0000, 3.3000, 1.4000, 0.2000],
        [5.0000, 3.2000, 1.2000, 0.2000],
        [5.8000, 2.7000, 4.1000, 1.0000]], dtype=torch.float64)
Anzahl der Etiketten: 10
label: tensor([0, 1, 0, 2, 1, 2, 2, 0, 0, 1], dtype=torch.int32)

Sowohl die Daten als auch das Etikett werden korrekt ausgegeben, wobei jeweils 20 als Chargengröße definiert sind. 150/20 ist nicht so viel, aber Dataloader gibt 10 ohne Fehler aus. Es ist auch praktisch, dass es auf diese Weise ohne spezielle Verarbeitung eingestellt werden kann.

Schließlich

Dies ist ein einfaches Beispiel. Bitte kommentieren Sie, wenn Sie weitere Fragen haben. Wenn Sie einen Fehler machen, tun Sie dies bitte.

Recommended Posts

Ich habe versucht, Pytorchs Datensatz zu erklären
Ich habe versucht, das Lesen von Dataset mit PyTorch zu implementieren
Ich habe versucht, SSD jetzt mit PyTorch zu implementieren (Dataset)
Ich habe versucht, CVAE mit PyTorch zu implementieren
Ich habe versucht zu debuggen.
Ich habe versucht, PredNet zu lernen
Ich habe versucht, PCANet zu implementieren
Ich habe versucht, Linux wieder einzuführen
Ich habe versucht, Pylint vorzustellen
Ich habe versucht, SparseMatrix zusammenzufassen
jupyter ich habe es berührt
Ich habe versucht, StarGAN (1) zu implementieren.
Ich habe versucht, Faster R-CNN mit Pytorch auszuführen
Ich habe versucht, DCGAN mit PyTorch zu implementieren und zu lernen
[Einführung in Pytorch] Ich habe versucht, Cifar10 mit VGG16 ♬ zu kategorisieren
Ich habe versucht, Dropout zu erklären
Ich habe versucht, Deep VQE zu implementieren
Ich habe versucht, eine Quip-API zu erstellen
Ich habe versucht, Python zu berühren (Installation)
Ich habe versucht, eine kontroverse Validierung zu implementieren
Ich habe Watson Voice Authentication (Speech to Text) ausprobiert.
Ich habe versucht, DeepPose mit PyTorch zu implementieren
Ich habe versucht, MNIST nach GNN zu klassifizieren (mit PyTorch-Geometrie).
Ich habe Teslas API berührt
Ich habe versucht, mich über MCMC zu organisieren.
Ich habe versucht, Realness GAN zu implementieren
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, SSD jetzt mit PyTorch zu implementieren (Modellversion)
Ich habe versucht, den Getränkepräferenzdatensatz durch Tensorzerlegung zu visualisieren.
Ich habe versucht, die Satzklassifizierung durch Self Attention mit PyTorch zu implementieren
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, Permutation in Python zu implementieren
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Ich versuchte das Weckwort zu erkennen
Ich habe versucht, mit Hy anzufangen
Ich habe versucht, PLSA in Python 2 zu implementieren
Python3-Standardeingabe habe ich versucht zusammenzufassen
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, der CPython-Implementierung ein Post-Inkrement hinzuzufügen
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, Optuna die Nummer lösen zu lassen
[Einführung in Pytorch] Ich habe mit sinGAN ♬ gespielt
Ich habe versucht, DeepPose mit PyTorch PartⅡ zu implementieren
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen
Ich habe versucht, die COTOHA-API zu berühren
Ich habe versucht, PPO in Python zu implementieren
Ich habe eine Web-API erstellt
Ich habe versucht, TSP mit QAOA zu lösen
[Python] Ich habe versucht, TF-IDF stetig zu berechnen
Ich habe versucht, Python zu berühren (grundlegende Syntax)
Ich versuchte mein Bestes, um zu Lasso zurückzukehren
Ich habe versucht, Ansibles Module-Linux-Edition zusammenzufassen