Il utilise essentiellement la même configuration réseau que l'article précédent (http://qiita.com/yuyakato/items/ab38064ca215e8750865). De plus, les valeurs indiquées dans "3.3. Hyper paramètres" sont les valeurs de base des hyper paramètres.
Nom de variable | sens | valeur |
---|---|---|
num_of_input_nodes |
Nombre de nœuds dans la couche d'entrée | 1 nœud |
num_of_hidden_nodes |
Nombre de nœuds de couche masqués | 2 nœuds |
num_of_output_nodes |
Nombre de nœuds dans la couche de sortie | 1 nœud |
length_of_sequences |
Longueur de séquence RNN | 50 étapes |
num_of_training_epochs |
Nombre de répétitions d'apprentissage | 2,000 fois |
num_of_prediction_epochs |
Nombre de répétitions de la prédiction | 100 fois |
size_of_mini_batch |
Nombre d'échantillons par mini-lot | 100 échantillons |
learning_rate |
Taux d'apprentissage | 0.1 |
forget_bias |
(Je ne suis pas sûr) | 1.0 (valeur par défaut) |
Le code source utilisé pour l'apprentissage / la prédiction, le bloc-notes qui a généré les données d'entraînement et le bloc-notes utilisé pour tracer les résultats sont disponibles sur GitHub. Veuillez vous y référer pour le code source et les valeurs spécifiques.
https://github.com/nayutaya/tensorflow-rnn-sin/tree/20160517/ex2
Num_of_hidden_nodes
: Nombre de nœuds de couche cachésLe graphique ci-dessous montre les résultats de prédiction et la fonction de perte lorsque le nombre de nœuds de couche cachés passe de 1 à 4. Si le nombre de nœuds de couche cachés est «1», vous pouvez voir qu'il est complètement imprévisible. De plus, si le nombre de nœuds dans la couche cachée est important, il semble que de bons résultats ne seront pas toujours obtenus. En regardant le graphique des fonctions de perte, plus il y a de nœuds dans la couche cachée, moins la perte finale est importante.
No | Nombre de nœuds de couche masqués | Temps d'apprentissage / estimé |
---|---|---|
1 | 1 |
3m53.845s |
2 | 2 |
3m30.844s |
3 | 3 |
4m36.324s |
4 | 4 |
5m30.537s |
Length_of_sequences
: longueur de séquence RNNLe graphique ci-dessous montre les résultats de prédiction et la fonction de perte lorsque la longueur de séquence de RNN est changée en "30", "40", "50", "60" et "70". Les données d'apprentissage cette fois sont une onde sinueuse avec 50 pas par cycle, mais on peut voir que même si elle est inférieure à un cycle, elle peut être suffisamment prédite.
No | Longueur de séquence RNN | Temps d'apprentissage / estimé |
---|---|---|
1 | 30 |
2m29.589s |
2 | 40 |
2m58.636s |
3 | 50 |
3m30.844s |
4 | 60 |
4m25.459s |
5 | 70 |
5m38.550s |
Num_of_training_epochs
: nombre d'itérations d'entraînementLe graphique ci-dessous montre les résultats de prédiction et la fonction de perte lorsque le nombre de répétitions d'entraînement passe à 1 000, 2 000 et 3 000. Dans le cas de 3 000 fois, le résultat de la fonction de perte fluctue d'environ 1 600 fois. Le résultat de la prédiction n'est pas non plus bon.
No | Nombre de répétitions d'apprentissage | Temps d'apprentissage / estimé |
---|---|---|
1 | 1,000 fois | 2m10.783s |
2 | 2,000 fois | 3m30.844s |
3 | 3,000 fois | 6m17.675s |
Size_of_mini_batch
: nombre d'échantillons par mini-lotLe graphique ci-dessous montre les résultats de prédiction et la fonction de perte lorsque le nombre d'échantillons par mini-lot est changé en «50», «100» et «200». Il n'y a pas de différence notable, mais fondamentalement, il semble que plus le nombre d'échantillons est élevé, meilleurs sont les résultats.
No | Nombre d'échantillons par mini-lot | Temps d'apprentissage / estimé |
---|---|---|
1 | 50 |
4m25.032s |
2 | 100 |
3m30.844s |
3 | 200 |
4m59.550s |
Learning_rate
: taux d'apprentissageLe graphique ci-dessous montre les résultats de prédiction et la fonction de perte lorsque le taux d'apprentissage transmis à l'optimiseur est changé en «0,02», «0,1» et «0,5». Dans le cas des taux d'apprentissage «0,02» et «0,5», il ne peut pas être prédit correctement. De plus, dans le cas du taux d'apprentissage "0,5", le résultat de la fonction de perte fluctue immédiatement après l'apprentissage.
No | Taux d'apprentissage | Temps d'apprentissage / estimé |
---|---|---|
1 | 0.02 |
3m46.852s |
2 | 0.1 |
3m30.844s |
3 | 0.5 |
4m39.136s |
3.6. forget_bias
En fait, le graphique de la fonction de perte et le résultat de la prédiction lorsque le paramètre forget_bias
de BasicLSTMCell
, qui n'est pas bien compris, est changé en 0.25
, 0.5
, 1.0
(valeur par défaut) est affiché ci-dessous. indiquer.
Dans le cas de "0,25", ce n'est pas prévisible.
No | forget_bias | Temps d'apprentissage / estimé |
---|---|---|
1 | 0.25 |
4m27.725s |
2 | 0.5 |
4m27.089s |
3 | 1.0 |
3m30.844s |
Le graphique ci-dessous montre les résultats de prédiction et la fonction de perte lorsque l'optimiseur utilisé pour l'optimisation est passé de Gradient Descent Optimizer
à ʻAdam Optimizer. ʻAdam Optimizer
a une réduction des pertes plus rapide et une valeur finale inférieure, mais il vibre violemment. Il est difficile d'arrêter d'apprendre.
No | optimiseur | Temps d'apprentissage / estimé |
---|---|---|
1 | GradientDescentOptimizer |
3m30.844s |
2 | AdamOptimizer |
4m46.116s |
Le graphique ci-dessous montre les résultats de prédiction et la fonction de perte lorsque la cellule RNN passe de «BasicLSTMCell» à «GRUCell». Il n'y avait pas beaucoup de différence.
No | Cellule RNN | Temps d'apprentissage / estimé |
---|---|---|
1 | BasicLSTMCell |
3m30.844s |
2 | GRUCell |
4m53.831s |
Je voudrais essayer ce qui se passerait si j'apprenais et prévoyais des données plus réalistes (cours des actions, devises, etc.).
Recommended Posts