Télécharger le jeu de données:
Lien: https: //pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw
Code d'extraction: 2xq4
Créer un ensemble de données: https://www.cnblogs.com/xiximayou/p/12398285.html
La lecture des ensembles de données: https://www.cnblogs.com/xiximayou/p/12422827.html
Formation: https://www.cnblogs.com/xiximayou/p/12448300.html
Enregistrez le modèle et la formation continue: https://www.cnblogs.com/xiximayou/p/12452624.html
Charger un modèle enregistré et le test: https://www.cnblogs.com/xiximayou/p/12459499.html
côté division jeu de formation et de validation bord vérification: https://www.cnblogs.com/xiximayou/p/12464738.html
Utiliser des stratégies d' apprentissage et le taux d'atténuation du bord latéral test de formation: https://www.cnblogs.com/xiximayou/p/12468010.html
Tensorboard utilisation de la formation visuelle et le processus de test: https://www.cnblogs.com/xiximayou/p/12482573.html
Recevoir les paramètres de ligne de commande: https://www.cnblogs.com/xiximayou/p/12488662.html
l' utilisation Top1 de top5 et de précision pour mesurer le modèle: https://www.cnblogs.com/xiximayou/p/12489069.html
L'utilisation du modèle resnet18 pré-formation: https://www.cnblogs.com/xiximayou/p/12504579.html
Le calcul de la moyenne et la variance de l'ensemble de données: https://www.cnblogs.com/xiximayou/p/12507149.html
La relation entre l'époque, le BatchSize, STEP: https://www.cnblogs.com/xiximayou/p/12405485.html
pytorch lire des ensembles de données de deux manières. La présente section décrit un deuxième mode de réalisation.
La structure du répertoire est stocké dans l'ensemble de données:
Tout d'abord, nous avons besoin d'une image du chemin et étiquette stockée txt fichier, créer un nouveau fichier dans le dossier utils Img_to_txt.py
importation os de glob importation glob root = " / content / lecteur / Mon disque / notebooks CoLab / data / dogcat / " train_path = root + " Train " val_path = racine + " val " test_path = racine + " Test " DEF img_to_txt (chemin): tmp = path.strip () split (. " / " ) [- 1 ] filename = tmp + " txt " avec ouverte (nom de fichier, ' un ' ,encoding =" Utf-8 " ) sous la forme fp: i = 0 pour f dans trié (os.listdir (path)): pour l' image en glob (chemin + " / " + str (f) + " /*.jpg " ): fp. écriture (images + " " + str (i) + " \ n " ) i + 1 = img_to_txt (train_path) #img_to_txt (val_path) #img_to_txt (test_path)
Caractérisé en ce que os.listdir () pour obtenir une liste des fichiers dans le chemin du dossier, [ « cat », « chien »]. glob () pour obtenir tous les fichiers correspondants dans le répertoire. Pour être en mesure de catégorie marque numérique dans l'ordre, nous devons trier la liste des répertoires. Nous allons ensuite chat marqué comme 0, chien étiqueté 1. Et l'image chemin correspondant et des étiquettes pour ajouter au txt.
Après avoir exécuté des résultats similaires ont été obtenus:
Ensuite, nous voulons atteindre leur classe ensemble de données défini, doivent hériter classe Dataset, et passer outre __getitem __ () et la méthode __len __ (): Créez un nouveau fichier dans les utils read_from_txt.py
de torch.utils.data importation Dataset de PIL importation image classe Dogcat (Dataset): def __init__ (self, txt_path, transform = Aucun, target_transform = Aucun): super (Dogcat, auto). __init__ () self.txt_path = txt_path self.transform = transformer self.target_transform = target_transform fp = open (txt_path, ' r ' ) imgs = [] pour ligne à fp: ligne= Line.strip (). Split () # impression (ligne) img = ligne [0] + " " + ligne [1] + " " + ligne [2 ] # [ '/ content / lecteur / Mon', « Drive / colab », 'notebooks / data / dogcat / train / chat / cat.9997.jpg', '0'] # imgs.append ((line [0], int (line [-1]))) imgs.append ((img, int (line [-1 ]))) self.imgs = DIM def __getitem__ (self, index): l' image, l' étiquette = self.imgs [index] images = Image.open (image) .convert ( " RGB ' ) si l' auto.transformerest pas None: l' image = self.transform (image) retour d' image, l' étiquette def __len__ (auto): retour len (self.imgs)
Puisque nous avons un espace dans le chemin, le chemin pris note et lorsque l'image de l'étiquette.
Après la rdata.py
de torch.utils.data importation DataLoader importation torchvision importation torchvision.transforms que transforme l' importation torche de utils importer read_from_txt def load_dataset_from_dataset (batch_size): # 预处理 impression (batch_size) train_transform = transforms.Compose ([transforms.RandomResizedCrop (224 ), transforme .ToTensor ()]) val_transform = transforms.Compose ([transforms.Resize ((224224 )), transforms.ToTensor ()]) test_transform = transforms.Compose ([transforms.Resize ((224224)), transforms.ToTensor ()]) racine = " / / content / lecteur / Mon lecteur / colab ordinateurs portables / utils " train_loader = DataLoader (read_from_txt.Dogcat (racine + " train.txt " , train_transform), batch_size = batch_size, lecture aléatoire = True, num_workers = 6 ) val_loader = DataLoader (read_from_txt.Dogcat (racine + " val.txt " , val_transform), batch_size = batch_size, lecture aléatoire = True, num_workers = 6 ) test_loader = DataLoader (read_from_txt.Dogcat (racine + " test.txt " , test_transform), batch_size = batch_size, lecture aléatoire = True, num_workers = 6 ) retour train_loader, val_loader, test_loader
Ensuite main.py sont prêts à l'emploi.
train_loader, val_loader, test_loader = rdata.load_dataset_from_dataset (batch_size)
Vérifiez l'erreur sous train.txt trouver des noms de fichiers en double, ces fichiers en double à supprimer.
Dernière exécution:
Ce dernier étant donné:
L'adresse de l'image n'a pas été lu à DataLoader rejoint dans le? Thread-safe? Cependant, pour trouver une solution. Mais le processus de création d'un ensemble de données dans son ensemble est un exemple.