http://deeplearning.net/tutorial/lstm.html
Une note lorsque je lis brièvement ce que cet exemple fait à l'intérieur. Pour être honnête, cette partie implémentation de LSTM ne peut pas être lue du tout.
La condition de lecture est telle que vous pouvez jouer avec afin de pouvoir la vérifier librement dans une certaine mesure.
En tant que code entier, il existe trois types de données d'entraînement à saisir.
train
valid
--Données pour vérifier le taux d'erreurtest
Nous préparons des données. Il est plus facile d'étendre cette partie lorsqu'il s'agit de données d'origine.
prepare_data()
maxlen
sont exclues (non réduites)
―― Même si vous souhaitez utiliser vos propres données, vous n'avez pas besoin de les manipuler.load_data()
--Préparation du train, des données de test valides à partir de données brutes
--Argument
--path
: Cela semble fonctionner comme un cache
-Téléchargement des données depuis ici
n_words
sort_by_len
--Trier par longueur de tableau. Est-ce plus rapide de le faire?
- maxlen
prepare_data
. Les données dépassant cette valeur seront ignoréesimdb_preprocess.py Script pour la préparation des données
--Il semble que vous convertissez en mot-> id. --Tokenize en utilisant perl ――Il semble que vous ayez supprimé certaines balises HTML. «Il semble que perl ne soit qu'un arrière-plan historique. (Honnêtement, un traitement qui semble être possible même avec python) ――Il semble qu'il puisse prendre en charge plusieurs langues, mais bien sûr, il ne prend pas en charge le japonais, qui ne peut pas être écrit séparément sans analyse morphologique.
lstm.py Script d'exécution d'apprentissage
$ python lstm.py
Peut être déplacé avec
train_lstm()
Véritable point final.
Ici, l'argument de la fonction est un paramètre qui peut être modifié de différentes manières. Il y en a beaucoup.
Énumérez les éléments susceptibles d'être altérés pour le moment.
dim_proj
--Nombre d'unités cachées.vaildFreq
--Une valeur définie liée à la fréquence de vérification du taux d'erreur.patience
--Variations liées au moment de la résiliation anticipée.max_epochs
--Nombre maximum d'exécutions d'époqueuse_dropout
--Présence ou absence de couche d'abandon. Vrai par défautoptimizer
decay_c
n_words
--Nombre maximum de vocabulaire. Par défaut 10000maxlen
saveto
--Destination de sortie du fichier de résultat final du modèlereload_model
--Démarrez la formation avec le modèle précédemment enregistré comme valeur initialelstm_model.npz
.
dispFreq
build_model()
La partie qui construit le modèle LSTM. Il est également utilisé pour reproduire le modèle qui a été formé avec train_lstm
.
init_tparams()
Conversion des paramètres pour theano.
Le paramètre à lancer à build_model
doit être passé par cette fonction.
init_params()
Paramètres globaux pour les non-LSTM
pred_error()
, pred_probs()
Fonctions qui exécutent le modèle.
pred_error
est utilisé pour le calcul des erreurs.
pred_probs
affiche le résultat. Non utilisé pendant l'apprentissage.
Les deux diffèrent selon qu'ils utilisent f_pred
ou f_pred_prob
.
f_pred_prob
donne le résultat de chaque probabilité, et f_pred
renvoie le nombre maximum d'éléments (= à quelle classe il appartenait).
sgd()
, adadelta()
, rmsprop()
Fonction d'optimisation. Le gars à choisir avec l'optimiseur
param_init_lstm()
, lstm_layer()
Cette partie de montage de LSTM. Le dos est encore un mystère à partir de ce point.
Cependant, si vous comparez le code fait dans lstm_layer
avec la formule, vous pouvez voir que presque la même chose est faite.
dropout_layer()
La partie mise en œuvre de l'abandon.
model = numpy.load("lstm_model.npz")
Comme il est enregistré au format de données numpy, il peut être lu par numpy.load
.
train_err
, valid_err
et test_err
.
--history_errs
semble être relativement pratique. Le taux d'erreur enregistré pour chaque «validFreq» est entré sous la forme de «[valid_err, test_err]».
--Autres paramètres du résultat d'apprentissage LSTM