[PYTHON] Je veux voir le nom de fichier de DataLoader

introduction

DataLoader de Pytorch C'est agréable d'être très facile à utiliser. Personnellement, je pensais qu'il serait plus facile d'analyser si je pouvais voir le nom du fichier qui n'a pas été classifié lorsque j'avais un problème de classification, alors je décrirai comment récupérer le nom du fichier sous forme de mémorandum.

Extraire le chemin

Ce n'est pas du tout difficile, mais c'est tiré directement du Dataloader. Créez des chargeurs de données en vous référant à TRANSFER LEARNING FOR COMPUTER VISION STRUCT [1] de 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

Extrayez le chemin des données des chargeurs de données créés.

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])

finalement

Après tout, c'est douloureux car il faut regarder directement les données classifiées s'il n'y a pas de nom de fichier. Alors pourquoi ne pas rechercher par correspondance de nom de fichier?

Recommended Posts

Je veux voir le nom de fichier de DataLoader
Je veux obtenir le nom du fichier, le numéro de ligne et le nom de la fonction dans Python 3.4
Je souhaite calculer le temps d'arrêt autorisé à partir du taux de fonctionnement
Je veux épingler Spyder à la barre des tâches
Je veux obtenir le nom de la fonction / méthode en cours d'exécution
Je veux sortir froidement sur la console
Je veux trouver automatiquement des pièces de haute qualité à partir des vidéos que j'ai tournées
Je veux gérer la rime part1
Je veux gérer la rime part3
Je veux utiliser jar de python
Je veux afficher la barre de progression
Je veux faire de la deuxième ligne le nom de la colonne dans pandas
Je veux gérer la rime part2
Je veux gérer la rime part5
Je veux gérer la rime part4
Je souhaite envoyer un signal uniquement du sous-thread au thread principal
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
Je souhaite me connecter à PostgreSQL à partir de plusieurs langues
Je souhaite envoyer un e-mail depuis Gmail en utilisant Python.
[Python] Je veux gérer 7DaysToDie depuis Discord! 1/3
Je veux gérer la rime part7 (BOW)
Je veux faire des crises de ma tête
Je veux utiliser le solveur ceres de python
Rechercher récursivement le répertoire spécifié pour voir le fichier
[Python] Je veux gérer 7DaysToDie depuis Discord! 2/3
Je veux enregistrer les entrées / sorties de fichiers sous Linux
Je veux créer du code C ++ à partir de code Python!
Je souhaite personnaliser l'apparence de zabbix
Je veux écrire dans un fichier avec Python
Je souhaite utiliser la fonction d'activation Mish
Je veux afficher la progression en Python!
Le fichier édité avec vim était en lecture seule, mais je veux le sauvegarder
Je veux obtenir le chemin du répertoire où le fichier en cours d'exécution est stocké.
[LINE Messaging API] Je souhaite envoyer un message du programme à tout le monde LINE
[Ansible] Je souhaite appeler ma propre fonction à partir du module de modèle (macro)
Gérez CSV avec l'élément que vous souhaitez analyser dans le nom du fichier
Je veux créer un lecteur de musique et enregistrer de la musique en même temps
Je veux ajouter du silence pendant 1 seconde au début d'un fichier wav
Je souhaite voir une liste de fichiers WebDAV dans le module Requêtes
J'ai créé un outil pour générer du Markdown à partir du fichier JSON Scrapbox exporté
[Python] J'ai essayé d'obtenir le nom du type sous forme de chaîne de caractères à partir de la fonction type
Je veux détecter des images de chats d'Instagram
J'ai essayé de détecter l'iris à partir de l'image de la caméra
Je veux grep le résultat de l'exécution de strace
Je veux faire défiler la table de décalage Django, mais ...
J'ai essayé de toucher un fichier CSV avec Python
Même avec JavaScript, je veux voir Python `range ()`!
Je voulais utiliser la bibliothèque Python de MATLAB
Je veux échantillonner au hasard un fichier avec Python
Je veux hériter de l'arrière avec la classe de données python
Je veux bien comprendre les bases de Bokeh
Je veux écrire en Python! (3) Utiliser des simulacres
Je veux gérer la rime part6 (organiser une fois)
Je veux automatiser ssh en utilisant la commande expect!
Je souhaite publier le produit au moindre coût
J'ai lu la référence Chainer (mise à jour de temps en temps)
Je veux utiliser le jeu de données R avec python
Je veux gérer la rime part8 (fini une fois)
Je souhaite augmenter la sécurité de la connexion SSH