[PYTHON] So erstellen Sie Daten für CNN (Chainer)

Ich habe versucht, mein eigenes Modell zu erstellen, indem ich mich im Hackathon herumgetrieben habe, aber es hat einige Zeit gedauert, um herauszufinden, wie die Daten in CNN gespeichert werden können, also Memo

from PIL import Image
import numpy as np
import glob
import random

def load_image():
    filepaths = glob.glob('data/*.png')

    datasets = []
    for filepath in filepaths:
        img = Image.open(filepath).convert('L')  #Laden Sie mit Kissen.'L'Bedeutet Graustufen
        img = img.resize((32, 32)) #Größe geändert auf 32x32x
        label = int(filepath.split('/')[-1].split('_')[0]) #Etikette(Ganzzahl größer oder gleich 0) (In meinem Fall setze ich häufig einen Markennamen an den Anfang des Dateinamens.)

        x = np.array(img, dtype=np.float32)
        x = x.reshape(1,32,32) # (Kanal, Höhe, Breite)
        t = np.array(label, dtype=np.int32) 

        datasets.append((x,t)) #Tippen Sie zum Auflisten auf x und t

    random.shuffle(datasets) #Mischen
    train = datasets[:1000] #Die ersten tausend zum Lernen
    test = datasets[1000:1100] #Zum Testen vom 1000. bis zum 1100.
    return train, test


def main(): #Im Folgenden wird auf cifer10 des Chainer-Beispiels verwiesen

    class_labels = 10
    train, test = load_image()
    
    model = L.Classifier(models.VGG.VGG(class_labels))
    if args.gpu >= 0:
        # Make a specified GPU current
        chainer.cuda.get_device_from_id(args.gpu).use()
        model.to_gpu()  # Copy the model to the GPU

    optimizer = chainer.optimizers.MomentumSGD(args.learnrate)
    optimizer.setup(model)
    optimizer.add_hook(chainer.optimizer.WeightDecay(5e-4))

    train_iter = chainer.iterators.SerialIterator(train, args.batchsize)
    test_iter = chainer.iterators.SerialIterator(test, args.batchsize,
                                                 repeat=False, shuffle=False)
    # Set up a trainer
    updater = training.StandardUpdater(train_iter, optimizer, device=args.gpu)
    trainer = training.Trainer(updater, (args.epoch, 'epoch'), out=args.out)

    # Evaluate the model with the test dataset for each epoch
    trainer.extend(TestModeEvaluator(test_iter, model, device=args.gpu))

    # Reduce the learning rate by half every 25 epochs.
    trainer.extend(extensions.ExponentialShift('lr', 0.5),
                   trigger=(25, 'epoch'))

    # Dump a computational graph from 'loss' variable at the first iteration
    # The "main" refers to the target link of the "main" optimizer.
    trainer.extend(extensions.dump_graph('main/loss'))

    # Take a snapshot at each epoch
    trainer.extend(extensions.snapshot(), trigger=(args.epoch, 'epoch'))

    # Write a log of evaluation statistics for each epoch
    trainer.extend(extensions.LogReport())

    # Print selected entries of the log to stdout
    # Here "main" refers to the target link of the "main" optimizer again, and
    # "validation" refers to the default name of the Evaluator extension.
    # Entries other than 'epoch' are reported by the Classifier link, called by
    # either the updater or the evaluator.
    trainer.extend(extensions.PrintReport(
        ['epoch', 'main/loss', 'validation/main/loss',
         'main/accuracy', 'validation/main/accuracy', 'elapsed_time']))

    # Print a progress bar to stdout
    trainer.extend(extensions.ProgressBar())

    if args.resume:
        # Resume from a snapshot
        chainer.serializers.load_npz(args.resume, trainer)

    # Run the training
    trainer.run()

Recommended Posts

So erstellen Sie Daten für CNN (Chainer)
Versuchen Sie, Daten in MongoDB abzulegen
[Itertools.permutations] So löschen Sie eine Sequenz in Python
Wie erstelle ich eine große Menge an Testdaten in MySQL? ??
Erstellen von CSV-Beispieldaten mit Hypothese
So erstellen Sie eine JSON-Datei in Python
So führen Sie CNN in 1 Systemnotation mit Tensorflow 2 aus
Lesen von Zeitreihendaten in PyTorch
So erstellen Sie eine Rest-API in Django
Der erste Schritt zur Protokollanalyse (Formatieren und Einfügen von Protokolldaten in Pandas)
So wenden Sie mit matplotlib Marker nur auf bestimmte Daten an
So erstellen Sie während des Codierens schnell Beispieldaten für ein Array
So erstellen Sie einen Bild-Uploader mit Bottle (Python)
[Linux] Wie Sie Ihre IP in eine Variable einfügen
Wie man in Python entwickelt
Umgang mit Datenrahmen
Erstellen und Verwenden von statischen / dynamischen Bibliotheken in C-Sprache
So erhalten Sie einen Überblick über Ihre Daten in Pandas
So erstellen Sie einen Datenrahmen und spielen mit Elementen mit Pandas
Data Science-Begleiter in Python, wie man Elemente in Pandas spezifiziert
[Python] Wie man PCA mit Python macht
Umgang mit Sitzungen in SQLAlchemy
So setzen Sie einen symbolischen Link
Lesen von e-Stat-Subregionsdaten
Verwendung von Klassen in Theano
Wie man nüchtern mit Pandas schreibt
So sammeln Sie Bilder in Python
So aktualisieren Sie Spyder in Anaconda
Verwendung von SQLite in Python
Umgang mit unausgeglichenen Daten
So erstellen Sie eine virtuelle Brücke
So konvertieren Sie 0,5 in 1056964608 auf einmal
So erstellen / löschen Sie symbolische Links
Missverständnisse beim Verbinden von cnn
Wie man CSS in Django reflektiert
Wie man Prozesse in großen Mengen abbricht
Wie man MySQL mit Python benutzt
Aufblasen von Daten (Datenerweiterung) mit PyTorch
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
Wie erstelle ich eine Docker-Datei?
Verwendung von PubChem mit Python
So führen Sie TensorFlow 1.0-Code in 2.0 aus
Umgang mit Japanisch mit Python
So erstellen Sie eine Konfigurationsdatei
So melden Sie sich bei Docker + NGINX an
Sammeln von Daten zum maschinellen Lernen
So rufen Sie PyTorch in Julia an
So verwenden Sie Python in Pyenv unter MacOS mit PyCall
Visualisierung, wo bei der Klassifizierung der Datenanalyse eine Fehlklassifizierung auftritt
Verwendung berechneter Spalten in CASTable
So erstellen Sie einen Klon aus Github
[Einführung in Python] Wie verwende ich eine Klasse in Python?
So unterdrücken Sie Anzeigefehler in matplotlib
So sammeln Sie Twitter-Daten ohne Programmierung
Dynamisches Definieren von Variablen in Python