http://deeplearning.net/tutorial/lstm.html
Ein Hinweis, wenn ich kurz lese, was dieses Beispiel im Inneren tut. Um ehrlich zu sein, kann dieser Implementierungsteil von LSTM überhaupt nicht gelesen werden.
Die Lesebedingung ist so, dass sie manipuliert werden kann, so dass sie bis zu einem gewissen Grad frei überprüft werden kann.
Insgesamt müssen drei Arten von Trainingsdaten eingegeben werden.
train
--Daten zum Lernen verwendetvalid
--Daten zur Überprüfung der Fehlerratetest
--Daten zur Fehlerüberprüfung unabhängig vom Training
――Es wird anscheinend verwendet, um zu überprüfen, ob Überlernen aufgetreten ist.Wir bereiten Daten vor. Es ist am einfachsten, diesen Teil zu erweitern, wenn Sie mit Originaldaten arbeiten.
prepare_data()
maxlen
angegeben werden ausgeschlossen (nicht verkleinert)
――Selbst wenn Sie Ihre eigenen Daten verwenden möchten, müssen Sie sich nicht damit anlegenload_data()
path
: Es scheint wie ein Cache zu funktionieren
-Downloading von Daten von hiern_words
sort_by_len
maxlen
prepare_data
. Daten, die darüber hinausgehen, werden übersprungenimdb_preprocess.py Skript zur Datenaufbereitung
lstm.py Ausführungsskript lernen
$ python lstm.py
Kann mit bewegt werden
train_lstm()
Echter Endpunkt.
Hier ist das Argument der Funktion ein Parameter, der auf verschiedene Arten geändert werden kann. Es gibt ziemlich viele.
Listen Sie die Dinge auf, die vorerst wahrscheinlich manipuliert werden.
dim_proj
vaildFreq
patience
--Variationen im Zusammenhang mit dem Zeitpunkt der vorzeitigen Beendigung.max_epochs
use_dropout
optimizer
--Optimierungsfunktion.decay_c
n_words
maxlen
saveto
reload_model
dispFreq
build_model()
Der Teil, der das LSTM-Modell erstellt. Es wird auch verwendet, um das Modell zu reproduzieren, das mit "train_lstm" trainiert wurde.
init_tparams()
Parameter für theano konvertieren.
Der Parameter, der an build_model
übergeben werden soll, muss über diese Funktion übergeben werden.
init_params()
Globale Einstellungen für Nicht-LSTM
pred_error()
, pred_probs()
Funktionen, die das Modell ausführen.
pred_error
wird zur Fehlerberechnung verwendet.
pred_probs
gibt das Ergebnis aus. Wird beim Lernen nicht verwendet.
Die beiden unterscheiden sich darin, ob sie "f_pred" oder "f_pred_prob" verwenden.
f_pred_prob
gibt das Ergebnis jeder Wahrscheinlichkeit an und f_pred
gibt die maximale Anzahl von Elementen zurück (= zu welcher Klasse sie gehörte).
sgd()
, adadelta()
, rmsprop()
Optimierungsfunktion. Der Typ mit Optimierer zu wählen
param_init_lstm()
, lstm_layer()
Dieser Montageteil von LSTM. Der Rücken ist von diesem Punkt aus immer noch ein Rätsel.
Wenn Sie jedoch den in lstm_layer
erstellten Code mit der Formel vergleichen, können Sie sehen, dass fast dasselbe getan wird.
dropout_layer()
Der Implementierungsteil von Dropout.
model = numpy.load("lstm_model.npz")
Da es im numpy-Datenformat gespeichert ist, kann es von numpy.load
gelesen werden.
history_errs
scheint relativ praktisch zu sein. Die für jede "validFreq" aufgezeichnete Fehlerrate wird in Form von "[valid_err, test_err]" eingegeben.