[PYTHON] Ich möchte den Dateinamen von DataLoader sehen

Einführung

Pytorchs DataLoader Es ist schön, sehr einfach zu bedienen zu sein. Ich persönlich dachte, dass es einfacher zu analysieren wäre, wenn ich den Dateinamen sehen könnte, der bei einem Klassifizierungsproblem nicht klassifiziert werden konnte. Daher werde ich beschreiben, wie der Dateiname als Memorandum abgerufen wird.

Pfad extrahieren

Es ist überhaupt nicht schwierig, aber es wird direkt vom Dataloader übernommen. Erstellen Sie Datenlader unter TRANSFER LEARNING FOR COMPUTER VISION STRUCT [1] von PyTorch.

IMAGE_SIZE=224
BATCH_SIZE=20
TRAIN = 'train'
VAL = 'val'
DATA_DIR = 'H:\\dataset/predata/' # select your dataset directory
DEVICE = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

data_transforms = {
    TRAIN: transforms.Compose([
        transforms.Resize(IMAGE_SIZE),
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ]),
    VAL: transforms.Compose([
        transforms.Resize(IMAGE_SIZE),
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ]),
}

image_datasets = {x: datasets.ImageFolder(os.path.join(DATA_DIR, x), data_transforms[x]) for x in [TRAIN, VAL]}
dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], 
                                              batch_size=BATCH_SIZE, shuffle=True, num_workers=4) for x in [TRAIN, VAL]}
dataset_sizes = {x: len(image_datasets[x]) for x in [TRAIN, VAL]}
class_names = image_datasets[TRAIN].classes

Extrahieren Sie den Datenpfad aus den erstellten Datenladern.

from enum import Enum
class Dataset(Enum):
    FILE_PATH = 0
    LABEL = 1

# full dataset
for j in range(dataset_sizes[VAL]):
    # abs path
    print(dataloaders[VAL].dataset.imgs[j][Dataset.FILE_PATH.value])
    # file name only
    print(os.path.basename(dataloaders[VAL].dataset.imgs[j][Dataset.FILE_PATH.value])) 

# there is one dataset
print(dataloaders[VAL].dataset.imgs[0][Dataset.FILE_PATH.value])

Schließlich

Immerhin ist es schmerzhaft, weil Sie die klassifizierten Daten direkt betrachten müssen, wenn es keinen Dateinamen gibt. Warum also nicht nach übereinstimmenden Dateinamen suchen?

Recommended Posts

Ich möchte den Dateinamen von DataLoader sehen
Ich möchte den Dateinamen, die Zeilennummer und den Funktionsnamen in Python 3.4 erhalten
Ich möchte die zulässige Ausfallzeit aus der Betriebsrate berechnen
Ich möchte Spyder an die Taskleiste anheften
Ich möchte den Namen der ausgeführten Funktion / Methode erhalten
Ich möchte kühl auf die Konsole ausgeben
Ich möchte automatisch hochwertige Teile aus den von mir aufgenommenen Videos finden
Ich möchte mit dem Reim Teil1 umgehen
Ich möchte mit dem Reim part3 umgehen
Ich möchte ein Glas aus Python verwenden
Ich möchte den Fortschrittsbalken anzeigen
Ich möchte die zweite Zeile zum Spaltennamen in Pandas machen
Ich möchte mit dem Reim part2 umgehen
Ich möchte mit dem Reim part5 umgehen
Ich möchte mit dem Reim part4 umgehen
Ich möchte nur ein Signal vom Sub-Thread zum Haupt-Thread senden
Der Dateiname war in Python schlecht und ich war süchtig nach Import
Ich möchte aus verschiedenen Sprachen eine Verbindung zu PostgreSQL herstellen
Ich möchte mit Python eine E-Mail von Google Mail senden.
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 1/3
Ich möchte mit dem Reim part7 (BOW) umgehen
Ich möchte Passungen aus meinem Kopf machen
Ich möchte Ceres Solver aus Python verwenden
Durchsuchen Sie das angegebene Verzeichnis rekursiv, um die Datei anzuzeigen
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 2/3
Ich möchte die Eingabe / Ausgabe von Dateien unter Linux protokollieren
Ich möchte C ++ - Code aus Python-Code erstellen!
Ich möchte das Erscheinungsbild von zabbix anpassen
Ich möchte mit Python in eine Datei schreiben
Ich möchte die Aktivierungsfunktion Mish verwenden
Ich möchte den Fortschritt in Python anzeigen!
Die mit vim bearbeitete Datei war schreibgeschützt, aber ich möchte sie speichern
Ich möchte den Pfad des Verzeichnisses abrufen, in dem die laufende Datei gespeichert ist.
[LINE Messaging API] Ich möchte eine Nachricht vom Programm an alle LINE senden
[Ansible] Ich möchte meine eigene Funktion über das Vorlagenmodul (Makro) aufrufen.
Behandeln Sie CSV mit dem Element, das Sie im Namen der Datei analysieren möchten
Ich möchte gleichzeitig einen Musik-Player erstellen und Musik ablegen
Ich möchte dem Anfang einer WAV-Datei 1 Sekunde lang Stille hinzufügen
Ich möchte eine Liste der WebDAV-Dateien im Modul Anfragen anzeigen
Ich habe ein Tool zum Generieren von Markdown aus der exportierten Scrapbox-JSON-Datei erstellt
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen
Ich möchte Bilder von Katzen von Instagram erkennen
Ich habe versucht, Iris aus dem Kamerabild zu erkennen
Ich möchte das Ausführungsergebnis von strace erfassen
Ich möchte in der Django-Verschiebungstabelle scrollen, aber ...
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Auch mit JavaScript möchte ich Python `range ()` sehen!
Ich wollte die Python-Bibliothek von MATLAB verwenden
Ich möchte eine Datei mit Python zufällig testen
Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich möchte mit dem Reim part6 umgehen (einmal organisieren)
Ich möchte ssh mit dem Befehl expected automatisieren!
Ich möchte das Produkt zu den niedrigsten Kosten veröffentlichen
Ich habe die Chainer-Referenz gelesen (von Zeit zu Zeit aktualisiert).
Ich möchte R-Datensatz mit Python verwenden
Ich möchte mit dem Reim part8 umgehen (einmal fertig)
Ich möchte die Sicherheit der SSH-Verbindung erhöhen