CNTK - Überwachung des Modells
In diesem Kapitel erfahren Sie, wie Sie ein Modell in CNTK überwachen.
Einführung
In den vorherigen Abschnitten haben wir einige Validierungen an unseren NN-Modellen durchgeführt. Aber ist es auch notwendig und möglich, unser Modell während des Trainings zu überwachen?
Ja, wir haben es schon benutzt ProgressWriterKlasse, um unser Modell zu überwachen, und es gibt viele weitere Möglichkeiten, dies zu tun. Bevor wir uns eingehend mit den Möglichkeiten befassen, werfen wir zunächst einen Blick darauf, wie die Überwachung in CNTK funktioniert und wie wir damit Probleme in unserem NN-Modell erkennen können.
Rückrufe in CNTK
Während des Trainings und der Validierung können wir mit CNTK Rückrufe an mehreren Stellen in der API angeben. Schauen wir uns zunächst genauer an, wann CNTK Rückrufe aufruft.
Wann ruft CNTK Rückrufe auf?
CNTK ruft die Rückrufe zu den festgelegten Trainings- und Testmomenten auf, wenn -
Ein Minibatch ist abgeschlossen.
Während des Trainings wird ein vollständiger Durchlauf des Datensatzes durchgeführt.
Ein Minibatch von Tests ist abgeschlossen.
Während des Tests wird ein vollständiger Sweep über den Datensatz durchgeführt.
Rückrufe angeben
Während der Arbeit mit CNTK können wir Rückrufe an mehreren Stellen in der API angeben. Zum Beispiel -
Wann Zug auf eine Verlustfunktion anrufen?
Wenn wir train für eine Verlustfunktion aufrufen, können wir hier eine Reihe von Rückrufen über das Rückrufargument wie folgt angeben
training_summary=loss.train((x_train,y_train),
parameter_learners=[learner],
callbacks=[progress_writer]),
minibatch_size=16, max_epochs=15)
Wenn Sie mit Minibatch-Quellen arbeiten oder eine manuelle Minibatch-Schleife verwenden
In diesem Fall können wir beim Erstellen der Rückrufe zu Überwachungszwecken angeben Trainer wie folgt -
from cntk.logging import ProgressPrinter
callbacks = [
ProgressPrinter(0)
]
Trainer = Trainer(z, (loss, metric), learner, [callbacks])
Verschiedene Überwachungswerkzeuge
Lassen Sie uns verschiedene Überwachungsinstrumente untersuchen.
ProgressPrinter
Während Sie dieses Tutorial lesen, werden Sie feststellen ProgressPrinterals das am häufigsten verwendete Überwachungstool. Einige der Eigenschaften vonProgressPrinter Überwachungswerkzeug sind−
ProgressPrinterclass implementiert eine grundlegende konsolenbasierte Protokollierung, um unser Modell zu überwachen. Es kann sich auf der Festplatte anmelden, die wir möchten.
Besonders nützlich bei der Arbeit in einem verteilten Trainingsszenario.
Dies ist auch sehr nützlich, wenn Sie in einem Szenario arbeiten, in dem wir uns nicht an der Konsole anmelden können, um die Ausgabe unseres Python-Programms zu sehen.
Mit Hilfe des folgenden Codes können wir eine Instanz von erstellen ProgressPrinter- -
ProgressPrinter(0, log_to_file=’test.txt’)
Wir werden die Ausgabe etwas bekommen, was wir in den früheren Abschnitten gesehen haben
Test.txt
CNTKCommandTrainInfo: train : 300
CNTKCommandTrainInfo: CNTKNoMoreCommands_Total : 300
CNTKCommandTrainBegin: train
-------------------------------------------------------------------
average since average since examples
loss last metric last
------------------------------------------------------
Learning rate per minibatch: 0.1
1.45 1.45 -0.189 -0.189 16
1.24 1.13 -0.0382 0.0371 48
[………]
TensorBoard
Einer der Nachteile der Verwendung von ProgressPrinter besteht darin, dass wir keinen guten Überblick darüber erhalten, wie schwierig der Verlust und der Fortschritt der Metrik im Laufe der Zeit sind. TensorBoardProgressWriter ist eine großartige Alternative zur ProgressPrinter-Klasse in CNTK.
Bevor wir es verwenden können, müssen wir es zuerst mit Hilfe des folgenden Befehls installieren:
pip install tensorboard
Um TensorBoard verwenden zu können, müssen wir jetzt einrichten TensorBoardProgressWriter in unserem Trainingscode wie folgt -
import time
from cntk.logging import TensorBoardProgressWriter
tensorbrd_writer = TensorBoardProgressWriter(log_dir=’logs/{}’.format(time.time()),freq=1,model=z)
Es wird empfohlen, die Methode close aufzurufen TensorBoardProgressWriter Instanz nach getan mit dem Training von NNModell.
Wir können das visualisieren TensorBoard Protokollierung von Daten mit Hilfe des folgenden Befehls -
Tensorboard –logdir logs