[PYTHON] [Google Colab] So unterbrechen Sie das Lernen und setzen es dann fort

1. Zuallererst

Hier finden Sie einige nützliche Tipps zur Verwendung von Google Colab.

2. Herausforderungen

Bei Verwendung von Google Colab Pro ist die Beschränkung auf bis zu 24 Stunden begrenzt. Wenn der Berechnungsaufwand des Modells 24 Stunden überschreitet, besteht daher das Problem, dass das Berechnungsergebnis in der Mitte verschwindet.

Wenn Sie beispielsweise schätzen, dass die Berechnung von 200 Epochen etwa 24 Stunden dauert und die Berechnung tatsächlich ausgeführt wird, dauert es einige Zeit, und Google Colab wird möglicherweise in der Nähe von 190 Epochen getrennt.

3. Lösung

Um dies zu lösen, wenden wir die folgende Methode an.

  1. Verwenden Sie Keras 'ModelCheckpoint (), um das Modell detailliert zu speichern.
  2. Das Modell wird im temporären Ordner von Google Drive gespeichert (Referenz: Google Colab-Tipps organisieren).
  3. Rufen Sie das Modell von der Mitte aus auf und starten Sie das Training neu, wenn die Berechnung abgeschlossen ist.

3.1. ModelCheckpoint () Einstellungen

python


from tensorflow.keras.callbacks import ModelCheckpoint

checkpoint = ModelCheckpoint(filepath = 'XXX.h5',
                             monitor='loss',
                             save_best_only=True,
                             save_weight_only=False,
                             mode='min'
                             period=1)

Argumentbeschreibung

1.Dateipfad: Der Pfad zum Speichern der Zeichenfolge und der Modelldatei 2. Monitor: Zu überwachender Wert 3. save_best_only: Wenn save_best_only = True, überschreiben die überwachten Daten nicht das neueste beste Modell 4.Modus: Einer von {auto, min, max} ist ausgewählt 5. save_weights_only: Wenn True, werden die Gewichte des Modells gespeichert. Andernfalls wird das gesamte Modell gespeichert. 6. Zeitraum: Intervall zwischen Kontrollpunkten (Anzahl der Epochen)

3.2. Erstes Lernen → Zwischenergebnisse in Google Drive speichern

Schreiben Sie den Code für Keras 'MNIST.

python


from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras.datasets import mnist

Google Drive Mount, Einstellungen für Modellspeicherordner

python


from google.colab import drive
drive.mount('/content/drive')

MODEL_DIR = "/content/drive/My Drive/temp"

if not os.path.exists(MODEL_DIR):  #Wenn das Verzeichnis nicht vorhanden ist, erstellen Sie es.
    os.makedirs(MODEL_DIR)
checkpoint = ModelCheckpoint(
    filepath=os.path.join(MODEL_DIR, "model-{epoch:02d}.h5"), save_best_only=True) 

Lernausführung

python



history = model.fit(Xtrain, Ytrain, batch_size=BATCH_SIZE, epochs=NUM_EPOCHS,  validation_split=0.1, callbacks=[checkpoint])

image.png image.png

Wenn Sie den obigen Code ausführen, wird die Modelldatei im temporären Ordner gespeichert. image.png

3.3. Zweites Lernen → Rufen Sie das erste Modell auf und starten Sie das Lernen von der Mitte aus neu

Es beginnt mit dem Aufruf von model-05.h5.

Modell laden

python


#Modell laden
model.load_weights(os.path.join(MODEL_DIR, "model-05.h5"))  #Geben Sie das Modell von an

Das zweite Trainingsmodell wurde umbenannt

Ändern Sie model-XX.h in model_new-XX.h.

python


if not os.path.exists(MODEL_DIR):  #Wenn das Verzeichnis nicht vorhanden ist, erstellen Sie es.
    os.makedirs(MODEL_DIR)
checkpoint = ModelCheckpoint(
    filepath=os.path.join(MODEL_DIR, "model_new-{epoch:02d}.h5"), 
    monitor = 'loss',
    save_best_only=True,
    mode='min',
    period=1) 

Lernausführung fortsetzen

python



history = model.fit(Xtrain, Ytrain, batch_size=BATCH_SIZE, epochs=NUM_EPOCHS,  validation_split=0.1, callbacks=[checkpoint])

Wenn wir uns den Wert von Training acc ansehen, können wir sehen, dass das Training seit Abschluss des letzten Trainings wieder aufgenommen wurde.

image.png image.png

Das neu trainierte Modell wird ebenfalls gespeichert. image.png

4. Zusammenfassung

  1. Es gibt ein Problem mit der Trennung von Google Colab Pro für 24 Stunden.
  2. Ich habe beschlossen, dieses Problem mit ModelCheckpoint () von Keras und Google Drive Mount zu lösen.
  3. Wir haben die Funktionsweise und Wirksamkeit der vorgeschlagenen Methode bestätigt.

4. Gesamtcode

Erste Studie

python


from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.utils import to_categorical
import os
import matplotlib.pyplot as plt

from google.colab import drive
drive.mount('/content/drive')
MODEL_DIR = "/content/drive/My Drive/temp"
if not os.path.exists(MODEL_DIR):  #Wenn das Verzeichnis nicht vorhanden ist, erstellen Sie es.
    os.makedirs(MODEL_DIR)
checkpoint = ModelCheckpoint(
    filepath=os.path.join(MODEL_DIR, "model-{epoch:02d}.h5"), save_best_only=True) 

BATCH_SIZE = 128
NUM_EPOCHS = 20

(Xtrain, ytrain), (Xtest, ytest) = mnist.load_data()
Xtrain = Xtrain.reshape(60000, 784).astype("float32") / 255
Xtest = Xtest.reshape(10000, 784).astype("float32") / 255
Ytrain = to_categorical(ytrain, 10)
Ytest = to_categorical(ytest, 10)
print(Xtrain.shape, Xtest.shape, Ytrain.shape, Ytest.shape)
#Modelldefinition
model = Sequential()
model.add(Dense(512, input_shape=(784,), activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(512, activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(10, activation="softmax"))
model.summary()
model.compile(optimizer="rmsprop", loss="categorical_crossentropy",
              metrics=["accuracy"])

#Ausführung lernen
history = model.fit(Xtrain, Ytrain, batch_size=BATCH_SIZE, epochs=NUM_EPOCHS,  validation_split=0.1, callbacks=[checkpoint])

#Diagrammzeichnung
plt.clf()
acc = history.history['accuracy']
val_acc = history.history['val_accuracy']

plot_epochs = range(1, len(acc)+1)
# Accuracy
plt.plot(plot_epochs, acc, 'bo-', label='Training acc')
plt.plot(plot_epochs, val_acc, 'b', label='Validation acc')
plt.title('model accuracy')
plt.ylabel('accuracy')  #Beschriftung der Y-Achse
plt.xlabel('epoch')  #X-Achsenbeschriftung
plt.legend()
plt.show()

loss = history.history['loss']
val_loss = history.history['val_loss']

plot_epochs = range(1, len(loss)+1)
# Accuracy
plt.plot(plot_epochs, loss, 'ro-', label='Training loss')
plt.plot(plot_epochs, val_loss, 'r', label='Validation loss')
plt.title('model loss')
plt.ylabel('loss')  #Beschriftung der Y-Achse
plt.xlabel('epoch')  #X-Achsenbeschriftung
plt.legend()
plt.show()

Zweites und anschließendes Lernen

python


from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.utils import to_categorical
import os
import matplotlib.pyplot as plt

from google.colab import drive
drive.mount('/content/drive')
MODEL_DIR = "/content/drive/My Drive/temp"
if not os.path.exists(MODEL_DIR):  #Wenn das Verzeichnis nicht vorhanden ist, erstellen Sie es.
    os.makedirs(MODEL_DIR)
checkpoint = ModelCheckpoint(
    filepath=os.path.join(MODEL_DIR, "model-{epoch:02d}.h5"), save_best_only=True) 


#Modell laden
model.load_weights(os.path.join(MODEL_DIR, "model-05.h5"))  #Geben Sie das Modell von an

if not os.path.exists(MODEL_DIR):  #Wenn das Verzeichnis nicht vorhanden ist, erstellen Sie es.
    os.makedirs(MODEL_DIR)
checkpoint = ModelCheckpoint(
    filepath=os.path.join(MODEL_DIR, "model_new-{epoch:02d}.h5"), 
    monitor = 'loss',
    save_best_only=True,
    mode='min',
    period=1) 

#Setzen Sie das Lernen fort
history = model.fit(Xtrain, Ytrain, batch_size=BATCH_SIZE, epochs=NUM_EPOCHS,  validation_split=0.1, callbacks=[checkpoint])

#Diagrammzeichnung
plt.clf()
acc = history.history['accuracy']
val_acc = history.history['val_accuracy']

plot_epochs = range(1, len(acc)+1)
# Accuracy
plt.plot(plot_epochs, acc, 'bo-', label='Training acc')
plt.plot(plot_epochs, val_acc, 'b', label='Validation acc')
plt.title('model accuracy')
plt.ylabel('accuracy')  #Beschriftung der Y-Achse
plt.xlabel('epoch')  #X-Achsenbeschriftung
plt.legend()
plt.show()

loss = history.history['loss']
val_loss = history.history['val_loss']

plot_epochs = range(1, len(loss)+1)
# Accuracy
plt.plot(plot_epochs, loss, 'ro-', label='Training loss')
plt.plot(plot_epochs, val_loss, 'r', label='Validation loss')
plt.title('model loss')
plt.ylabel('loss')  #Beschriftung der Y-Achse
plt.xlabel('epoch')  #X-Achsenbeschriftung
plt.legend()
plt.show()


5. Referenzmaterialien

  1. Google Colab-Tipps organisieren
  2. [So unterbrechen Sie das Lernen mit Keras und setzen es dann von der Mitte aus fort](https://intellectual-curiosity.tokyo/2019/06/25/keras%e3%81%a7%e5%ad%a6%e7% bf% 92% e3% 82% 92% e4% b8% ad% e6% 96% ad% e3% 81% 97% e3% 81% 9f% e5% be% 8c% e3% 80% 81% e9% 80% 94% e4% b8% ad% e3% 81% 8b% e3% 82% 89% e5% 86% 8d% e9% 96% 8b% e3% 81% 99% e3% 82% 8b% e6% 96% b9% e6% b3% 95 /? nicht genehmigt = 1126 & Moderations-Hash = a1d80e5413be867d6179fd011c317d71 # comment-1126)
  3. Speichern Sie das beste Modell (Verwendung von ModelCheckpoint)

Recommended Posts

[Google Colab] So unterbrechen Sie das Lernen und setzen es dann fort
So zeigen Sie Videos in Google Colab inline an
So installieren Sie den Cascade-Detektor und wie verwenden Sie ihn
"Wie ist es dann mit anderen Methoden zu vergleichen?"
So führen Sie AutoGluon in einer Google Colab-GPU-Umgebung aus
Wie man Decorator in Django benutzt und wie man es macht
[TF] Speichern und Laden von Tensorflow-Trainingsparametern
So bereiten Sie die Umgebung mit Courseras fortgeschrittenem Kurs für maschinelles Lernen auf Google Colab vor
So zeichnen Sie interaktiv eine Pipeline für maschinelles Lernen mit scikit-learn und speichern sie in HTML
Über das Lernen mit Google Colab
[Pfeffer] Wie benutzt man es?
Holen Sie sich eine globale IP und exportieren Sie sie in Google Spreadsheets
Wie man Youtube in MP3 konvertiert und es super sicher herunterlädt [Python]
Deep Learning mit Shogi AI auf Mac und Google Colab
Übersicht über die virtuelle Python-Umgebung und deren Erstellung
So verwenden Sie Google Colaboratory
[Für Anfänger] So implementieren Sie O'reilly-Beispielcode in Google Colab
So aktualisieren Sie die App Store-Beschreibung in Google Spreadsheets und Fastlane automatisch
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 11
So installieren Sie OpenCV in Cloud9 und führen es in Python aus
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 1-6
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 12 3
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 7
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 10 6-9
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 10
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 7 5-7
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 9
Verwendung von Google Colaboratory und Verwendungsbeispiel (PyTorch × DCGAN)
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 12 3
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 12 3
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 12 1-2
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 12 3
Die stärkste Möglichkeit, MeCab und CaboCha mit Google Colab zu verwenden
[Lernen stärken] Wie zeichnet man OpenAI Gym auf Google Corab (Version 2020.6)?
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 12 3 ~ 5
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 7 9
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 8 5-9
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 8 1-4
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 12 3
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 7 8
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 7 1-4
[Rails] So zeigen Sie Google Map an
So installieren und verwenden Sie Tesseract-OCR
[Memo] Verwendung von Google MµG
So installieren und konfigurieren Sie Amsel
Verwendung von .bash_profile und .bashrc
So installieren und verwenden Sie Graphviz
Selen und Python zum Öffnen von Google
Sammeln von Daten zum maschinellen Lernen
Lösen von Folienrätseln und 15 Rätseln
Kopieren und Einfügen des Inhalts eines Blattes im JSON-Format mit einer Google-Tabelle (mithilfe von Google Colab)
[Rails] google maps api So posten und anzeigen Sie einschließlich Karteninformationen
So machen Sie den Containernamen in Docker als Subdomain zugänglich
Fühlen Sie sich frei, 100 Datenwissenschaften mit Google Colab und Azure Notebooks zu schlagen!
Verwendung von VS Code (Codeserver) mit Google Colab in nur 3 Zeilen
Lernen Sie mit Shogi AI Deep Learning auf Mac und Google Colab Verwenden Sie Google Colab
Tiefes Lernen auf Mac- und Google Colab-Wörtern, die mit Shogi AI gelernt wurden
[Rails] So berechnen Sie Breiten- und Längengrade mit hoher Genauigkeit mithilfe der Geocoding-API und zeigen sie auf Google Map an
[Linux] Unterteilen von Dateien und Ordnern