Il est difficile de configurer le réseau neuronal,Parce qu'il n'y a pas de bonne Théorie sur la façon de faire.
Vous devez systématiquement explorer les différentes configurations de paramètres du point de vue des résultats dynamiques et objectifs,Pour tenter de comprendre la situation d'un problème de modélisation prédictive donné.
Dans ce tutoriel,.Vous apprendrez comment explorer la façon de prévoir les configurations de problèmes pour les séries chronologiques LSTM Paramètres du réseau.
Une fois ce tutoriel terminé,Vous apprendrez:
Comment utiliser Keras Ajustement LSTM Hyperparamètre pour la prévision des séries chronologiques
Ce tutoriel est divisé en 6 Sections;C'est vrai.:
Ce tutoriel suppose que vous avez installé Python SciPy Environnement.Vous pouvez utiliser Python 2 Ou 3.
Ce tutoriel suppose que vous avez installé Keras v2.0 Ou plus tard et TensorFlow .
Ce tutoriel suppose également que vous avez installé scikit-learn、Pandas、NumPy Et Matplotlib.
Ensemble de données sur les ventes de shampooingCet ensemble de données décrit 3 Volume des ventes mensuelles de shampooing au cours de l'année.
L'Unit é est le nombre de ventes,Oui. 36 Observations.
L'exemple suivant charge et crée un diagramme d'un ensemble de données chargé.
#Charger et dessiner l'ensemble de données
# Charger l'ensemble de données
def paser(x):
return dattme.strptme('190'+x, '%Y-%m')
seres = read_csv('sale.csv', header=0, pare_dats=[0])
# Résumé des lignes précédentes
print(seres.head())
# Tracer un diagramme de ligne
seres.plot()
Lancez l'exemple pour charger l'ensemble de données sous Pandas Avant la séquence et la sortie 5 D'accord.
Puis créez un diagramme de ligne pour cette séquence,Montre une nette tendance à la hausse.
Diagramme linéaire de l'ensemble de données sur les ventes de shampooing
Et puis...,Nous verrons ce qui a été utilisé dans l'expérience LSTM Outils de configuration et de test.
Tests expérimentauxCette section décrit les outils de test utilisés dans ce tutoriel.
Nous allons diviser l'ensemble de données sur les ventes de shampooing en deux parties:Ensembles de formation et d'essais.
Les données des deux premières années seront utilisées pour l'ensemble de données sur la formation.,Les données de l'année restante seront utilisées pour l'ensemble d'essais..
Les modèles seront élaborés à l'aide d'ensembles de données de formation et les ensembles de données d'essai seront prévus..
Les prévisions de persistance sur l'ensemble de données d'essai permettent d'obtenir des ventes mensuelles de shampooing 136.761 Erreur.Ceci fournit une limite de performance inférieure acceptable sur l'ensemble d'essais.
Évaluation du modèleUtilisez le défilement pour prévoir le scénario.
Chaque étape de l'ensemble de données d'essai sera effectuée une à la fois.Le modèle sera utilisé pour prévoir les étapes de temps,Les valeurs réelles prévues dans l'ensemble d'essai seront ensuite utilisées.,Et il est fourni au modèle pour la prévision de l'étape suivante dans le temps.
Ceci simule une scène du monde réel,Chaque mois, il y aura de nouvelles observations sur les ventes de shampooing,Et pour les prévisions du mois prochain.
Ceci sera simulé par la formation et la mise à l'essai de la structure de l'ensemble de données.Nous effectuerons toutes les prévisions en une seule fois.
Toutes les prévisions pour l'ensemble de données d'essai seront recueillies.,Et calculer les erreurs pour résumer les compétences du modèle.L'erreur RMS sera utilisée (RMSE),Parce qu'il punit de grandes erreurs et génère des données prédites(C'est - à - dire les ventes mensuelles de shampooing)Fractions dans la même unité.
Préparation des donnéesAvant que nous puissions LSTM Avant que le modèle ne s'adapte à l'ensemble de données,Nous devons convertir les données.
Avant d'adapter le modèle et de faire des prévisions,Effectuer les trois transformations de données suivantes sur l'ensemble de données.
Avant les calculs et les erreurs,Ces transformations sont retournées à l'échelle originale dans la prévision.
Fonctionnement de l'expérienceChaque protocole expérimental sera exécuté10Une fois.
La raison en est que,LSTMLes conditions initiales aléatoires d'un réseau, à chaque fois qu'une configuration donnée est formée,Cela pourrait conduire à des résultats très différents.
Une méthode de diagnostic sera utilisée pour étudier la configuration du modèle.C'est le diagramme linéaire qui va créer les compétences du modèle au fil du temps(Les itérations de formation sont appeléesepochs),Et l'étudier,Pour mieux comprendre comment une configuration donnée est exécutée,Et comment l'ajuster pour une meilleure performance.
À la fin de chaque période,Le modèle sera évalué sur les ensembles de données de formation et d'essai.,Et sauvegardezRMSEPoints.
Formation et tests à la fin de chaque scénarioRMSELes scores seront imprimés,Pour afficher les progrès.
Formé et testéRMSELes séries fractionnées sont tracées en ligne à la fin de l'exécution.Les points d'entraînement sont en bleu,Les scores des tests sont exprimés en orange.
Examinons les résultats.
Nous verrons le premier ajustement LSTM Le paramètre est le nombre de périodes d'entraînement.
Le modèle utilisera un lot 4 Et un seul neurone.Nous explorerons l'effet de la formation de cette configuration pour un nombre différent de périodes d'entraînement.
Le Code est assez bien commenté,Ça devrait être facile à comprendre..
#Possibilité d'enregistrer des images sur le serveur
matplotlib.use('Agg')
# Fonction d'analyse date - heure utilisée pour charger l'ensemble de données
def paser(x):
return dateime.strptme('190'+x, '%Y-%m')
# Définir une séquence comme un problème d'apprentissage supervisé
colmns.appnd(df)
df = concat(colns, axis=1)
# Créer une séquence différentielle
diffene(dtaset, ieral=1):
# Étendre les données de formation et d'essai à[-1, 1].
scae(train, test):
scler = salr.fit(train)
# Convertir l'ensemble de formation
train = trin.rhape(tain.hpe[0], tran.shpe[1])
# Test de transformation
tst_caed = scler.trnfom(test)
# Échelle inverse de la valeur prévue
inve_scle(saer, X, yhat):
# Évaluer le modèle sur un ensemble de données,Retour en unités convertiesRMSE
evaluate(mdel, rw_data, scald_dataet, caler)
# Séparez - vous.
X, y = scald_daaset[:,0:-1], saleddaaset[:,-1)
# Remodelage
reshaed = X.reshpe(len(X), 1, 1)
# Ensemble de données de prévision
predict(rshped, bth_ize=tchsize)
# Inverser la transformation des données dans la prévision
for i in rage(len(outut)):
yat = output[i,0]
# Inverser l'échelle
yhat = inrtscle(saer, X[i], yhat)
# Inverse la différence
yhat = yhat + raaa[i].
# Prévisions de stockage
pdiis.ppd(yhat)
# Rapport sur le rendement
rmse = srt(mensuederror pricions) )
# Effectuer les données de formationLSTMAjustement du réseau
fitlstm(tran, tet, raw, caler bath_sie, n_eoch, erns):
# Préparation du modèle
model = Sequential()
moel.ad(LSTM(neons, bh_phpe, stateful)
# Modèle d'ajustement
for i in range(nb_epoch):
fit(X, y, epocs=1, bathsze, verose=0, shufle=False)
# Évaluer le modèle sur les données de formation
mse.apend(evalaion(mdel, rawtain, trai, scler, 0, bcize))
# Évaluer le modèle sur les données d'essai
rmse.append(evalh_size))
# Effectuer un test diagnostique
run():
# Charger l'ensemble de données
read_csv('sale.csv'
# Convertir les données en stationnaire
diffe(raues, 1)
# Transformer les données en apprentissage supervisé
supd = timespevied(diues, 1)
suplues = supd.vales
# Diviser les données en ensembles de formation et d'essai
train, test = supues[0:-12], suplues[-12:] .
# Modifier l'échelle des données
scar, traaled, tescaled = scale(tain, tst)
# Modèle d'ajustement et d'évaluation
traed = trainld[2:, :]
# Configuration
reas = 10
nbch = 4
nphs = 500
nnens = 1
# Effectuer un test diagnostique
for i in range(ret):
fit(train, tes, rawues, scler, nbth, necs, neons)
Attention!:Tenir compte du caractère aléatoire des algorithmes ou des procédures d'évaluation,Ou la différence de précision numérique.Envisager d'exécuter l'exemple plus d'une fois et comparer les résultats moyens.
Les expériences en cours se dérouleront 10 Sortie de l'ensemble de formation et d'essai à la fin de l'expérience RMSE.
Une série d'ensembles d'entraînement et d'essais a également été créée après chaque période d'entraînement. RMSE Diagramme linéaire des fractions.
500 Résultats du diagnostic pour la période
Les résultats montrent clairement que,Presque toutes les expériences RMSE Tendance à la baisse pendant la période d'entraînement.
Il montre que le modèle apprend le problème et qu'il a une certaine capacité de prévision.En fait,Tous les résultats finaux des tests étaient inférieurs à ceux obtenus pour cette question 136.761 De RMSE Modèle de persistance simple pour(Simple prédiction)Erreur.
Les résultats montrent que,Plus de périodes de formation produiront des modèles plus qualifiés.
Essayons de mettre epoch Compter à partir de 500 Double à 1000.
Dans cette section,Nous utilisons les mêmes paramètres expérimentaux et ajustons le modèle à plus de 1000 Période de formation.
Plus précisément,, In run() Dans la fonction n_epochs Paramètre défini à 1000.
nepohs = 1000
Attention!: Tenir compte du caractère aléatoire des algorithmes ou des procédures d'évaluation,Ou la différence de précision numérique.Envisager d'exécuter l'exemple plus d'une fois et comparer les résultats moyens.
L'exécution de cet exemple produit le dernier epoch De l'ensemble d'entraînement et de test RMSE.
Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.
1000 Résultats du diagnostic pour la période
Nous pouvons voir,La tendance à la baisse des erreurs de modèle se poursuit,Et ça semble ralentir.
Les lignes des cas d'entraînement et d'essai deviennent plus horizontales,Mais il y a encore une tendance générale à la baisse,Malgré un faible taux de variation.Quelques exemples d'erreurs de test montrent qu'environ 600 Points d'inflexion possibles pour les périodes,Et peut montrer une tendance à la hausse.
Nous sommes intéressés par l'amélioration continue du rendement moyen sur l'ensemble d'essais,Et ça pourrait durer.
Essayons de mettre epoch Compter à partir de 1000 Doubler à 2000.
Dans cette section,Nous utilisons les mêmes paramètres expérimentaux et ajustons le modèle à plus de 2000 Période de formation.
Plus précisément,, Inrun() Dans la fonction npochParamètre défini à 2000 .
nepoch = 2000
Attention!:Tenir compte du caractère aléatoire des algorithmes ou des procédures d'évaluation,Ou la différence de précision numérique.Envisager d'exécuter l'exemple plus d'une fois et comparer les résultats moyens.
L'exécution de cet exemple produit le dernier epoch De l'ensemble d'entraînement et de test RMSE.
Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.
2000 Périodeepoch Résultats du diagnostic
Comme on aurait pu le deviner,Ajout à l'ensemble de données de formation et d'essai 1000 - Oui. epoch Moyenne,La tendance à la baisse des erreurs se poursuit.
Ce qui est remarquable, c'est que,Environ la moitié des cas ont réduit les erreurs jusqu'à la fin de l'opération,Le reste montre des signes de tendance à la hausse.
La tendance à la croissance est le signe d'un ajustement excessif.C'est lorsque le modèle s'adapte trop à l'ensemble de données d'entraînement,Le coût est une dégradation des performances sur l'ensemble de données d'essai.L'amélioration continue des ensembles de données de formation en est un exemple.,Et l'amélioration après avoir testé les points d'inflexion et les pires compétences de l'ensemble de données.Sur l'ensemble de données d'essai,Moins de la moitié des opérations montrent le début de ce type de mode.
Malgré tout,Le résultat final de la durée sur l'ensemble de données d'essai est toujours très bon.Nous pouvons voir d'autres avantages avec une formation plus longue.
Essayons de doubler la durée,De2000À4000.
Dans cette section,Nous utilisons les mêmes paramètres expérimentaux et ajustons le modèle à plus de 4000 Période de formation.
Plus précisément,, Inrun() Dans la fonction n_epochsParamètre défini à 4000 .
nepocs = 4000
Attention!:Tenir compte du caractère aléatoire des algorithmes ou des procédures d'évaluation,Ou la différence de précision numérique.Envisager d'exécuter l'exemple plus d'une fois et comparer les résultats moyens.
L'exécution de cet exemple produit le dernier epoch De l'ensemble d'entraînement et de test RMSE.
Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.
4000 epoch Résultats du diagnostic
Même si 4000 - Oui. epoch,Il existe également une tendance générale à l'amélioration des performances.Il y a une condition de surajustement grave,C'est - à - dire que l'erreur d'essai a fortement augmenté.
Encore une fois,La plupart des opérations“C'est bon.”(Mieux que la durabilité)Fin de l'erreur de test finale pour.
Résumé des résultatsLes diagnostics ci - dessus aident à explorer le comportement dynamique du modèle,Mais manque de performance moyenne objective et comparable.
Nous pouvons résoudre ce problème en répétant les mêmes expériences et en calculant et en comparant les statistiques sommaires pour chaque configuration.Dans ce cas,,C'est fait. 30 Opérations secondaires,La valeur temporelle est 500、1000、2000、4000 Et 6000.
L'idée est d'utiliser un grand nombre de statistiques agrégées pour comparer les configurations,Et voir exactement quelles configurations pourraient avoir une meilleure performance moyenne.
Voici un exemple complet de code.
# Exécuter une expérience répétée
epernt(rpeas, sris, ochs):
# Convertir les données en stationnaire
dif_vues = diferne(ravaues, 1)
# Conversion des données en apprentissage supervisé
to_spersed(dif_vles, 1)
# Diviser les données en ensembles de formation et d'essai
train, test = spervsed[0:-2], suervues[-12:] .
# Modifier l'échelle des données
scale(train, test)
# Expérience de fonctionnement
for r in range(reeats):
# Modèle d'ajustement
size = 4
trtried = traled[2:, :]
ltmol = lstm(tamd, bachsie, eohs, 1)
# Prévoir l'ensemble des données de formation,Pour établir l'état des prévisions
trainmd[:, 0].resape(lentran_tmmed), 1, 1)
predict(tain_rsaped, ah_size=ath_ize)
# Ensemble de données d'essai prédictives
te_sapd = tstscaled[:,0:-1)
predict(testped, btze=btc_sze)
for i in range(len(outut)):
yhat = output[i,0]
X = te_saled[i, 0:-1] .
# Inverser l'échelle
yhat = invere(aler, X, yhat)
# Inverse la différence
yht = invsefece(raw_aues, yat, len+1-i)
# Rapport sur le rendement
sqrt(men_sqred_eror(a_vals[-12:], pedins) )
# Changer la durée de la formation
echs = [500, 1000, 2000, 4000, 6000] .
for e in eochs:
exiet(rpats, sries, e)
# Résumé des résultats
boxlot()
Exécuter le Code d'abord sortir 5 Statistiques sommaires pour chaque configuration.Ce qui est remarquable, c'est que,Il s'agit notamment des RMSE Moyenne et écart type des scores.
La moyenne donne le concept de la performance moyenne attendue de la configuration,Et l'écart type donne le concept de variance.Minimum et maximum RMSE Les scores donnent également la gamme des meilleurs et des pires exemples possibles..
Voir la moyenne seulement RMSE Points,Les résultats montrent que la configuration est 1000 De epoch Peut - être mieux..Les résultats montrent également que,Il faudra peut - être 1000 à 2000 Entre les valeurs pour une analyse plus approfondie.
La répartition est également indiquée sur le diagramme de la boîte.Cela aide à comprendre comment les distributions peuvent être comparées directement.
La ligne rouge indique la médiane,La case indique le paragraphe 25 No et No. 75 Percentile,Ou médiane 50% Données.Cette comparaison montre également que,Oui. epochs Set to 1000 Le choix est meilleur que l'alternative testée.Il montre également que,Ça pourrait être dans 2000 Ou 4000 Obtenir une performance optimale lors des itérations,Mais le prix est que la performance moyenne est pire.
Résumé Epoch Diagramme de boîte des résultats
Et puis...,Nous verrons l'effet de la taille du lot.
La taille du lot contrôle la fréquence à laquelle les poids du réseau sont mis à jour.
Ce qui est important,In Keras Moyenne,La taille du lot doit être un facteur de la taille de l'ensemble de données d'essai et de formation.
Dans la section précédente, nous avons discuté de la formation epoch Dans la partie du nombre,La taille du lot est fixée à 4,Il est divisé en ensembles de données d'essai(La taille est 12)Et les ensembles de données d'essai(La taille est 20).
Dans cette section,Nous examinerons les effets du changement de taille des lots.On va s'entraîner. epoch Le nombre de 1000.
Pour rappel,La section précédente a évalué la taille du lot à4,La durée est de1000Expérience.
1000 Résultats du diagnostic pour la période
Dans cette section,Nous nous concentrons sur la taille des lots à partir de 4 Réduire de moitié à 2.
Ce changement est C'est exact.run() En fonction n_batchParamètre exécuté ;Par exemple:
n_batch = 2
L'exécution de cet exemple montre que la taille du lot est 4 Même tendance générale du rendement,Peut - être plus élevé au cours de la dernière période RMSE.
L'exécution peut montrer une stabilisation plus précoce RMES Comportement,Plutôt que de continuer à baisser..
Voici la liste finale de chaque course RSME Points.
Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.
1000 La période et la taille du lot sont 2 Résultats du diagnostic
Essayons encore d'utiliser la taille du lot.
Il s'agit de mettre à jour le réseau après chaque mode d'entraînement.Peut être comparé à l'apprentissage par lots,Où les poids ne sont que dans chaque epoch Mise à jour à la fin.
On peut. Inrun() Changement dans la fonction n_batchParamètres ;Par exemple:
n_batch = 1
Encore une fois,L'exécution de cet exemple produit la dernière phase de chaque exécution RMSE Points.
Un test et une formation sont également créés pour chaque duréeRMSEDiagramme linéaire des fractions.
Le graphique montre,Avec le temps,TestsRMSEPlus de changements,Peut - être un entraînement.RMSEPlus que les tests en vracRMSEStable plus rapidement.TestsRMSEL'augmentation de la variabilité est attendue,Parce que chaque mise à jour apporte peu de rétroaction sur les changements apportés au réseau.
La figure montre également,Si la configuration est assignée à plus de temps d'entraînement,Peut - être.RMSELa tendance à la baisse se poursuivra.
1000 La période et la taille du lot sont 1 Résultats du diagnostic
Résumé des résultatsComme pendant la formation,Nous pouvons comparer objectivement les performances d'un réseau avec différentes tailles de lots.
Exécution par configuration 30 Une fois,Et calculer les statistiques sommaires en fonction des résultats finaux.
# Exécuter une expérience répétée
# Convertir les données en stationnaire
raw_vues = sres.values
df_vaues = difence(rvalues, 1)
# Conversion des données en apprentissage supervisé
suesr_lus = surior.values
# Diviser les données en ensembles de formation et d'essai
# Échelle de transformation des données
tra_cled,testscld = scale(tain, tet)
# Expérience de fonctionnement
# Modèle d'ajustement
tran_timed = tan_saled[2:, :]
lstmmdl = lstm(tainrmd, ach_e, 1000, 1)
# Prévoir l'ensemble des données de formation pour établir l'état de prévision
preit(trairehae,bach_ie=bat_size)
# Ensemble de données d'essai prédictives
preict(tst_rehapeatc_ze=bathsize)
X = tes_cd[i, 0:-1]
# Inverser l'échelle
yht = ivetcale(aler, X, yhat)
# Inverse la différence
yat = invese_dfence(awvalus, yat, le(tetsald)+1-i)
# Rapport sur le rendement
rmse = sqrt(mean_urerror)
# Charger l'ensemble de données
# L'expérience
# Modifier le lot de formation
Lot = [1, 2, 4]
boxplot()
En termes de performance moyenne seulement,Les résultats indiquent que la taille du lot est 1 Heure RMSE Faible. Comme indiqué dans la section précédente,Cela pourrait encore s'améliorer avec plus de périodes d'entraînement.
Un diagramme de boîte de données a également été créé,Pour aider à comparer graphiquement la distribution.La figure montre la performance médiane comme une ligne rouge,Où la taille du lot est 4 Afficher la plus grande différence et la médiane la plus basse RMSE.
L'ajustement du réseau neuronal est un compromis entre la performance moyenne et la variabilité de cette performance,Le résultat idéal a une faible erreur moyenne et une faible variabilité,Cela signifie qu'il est généralement bon et reproductible.
.Diagramme en boîte résumant les résultats de la taille du lot
Dans cette section,Nous allons étudier l'impact de la modification du nombre de neurones dans le réseau.
Le nombre de neurones affecte la capacité d'apprentissage du réseau.En général,Plus de neurones peuvent apprendre plus de structures à partir de problèmes au détriment de plus de temps d'entraînement.Une plus grande capacité d'apprentissage peut également entraîner des problèmes potentiels de surajustement des données de formation..
Nous utiliserons 4 Et 1000 Taille du lot pour les périodes d'entraînement.
Nous allons 1 Les neurones commencent.
Un rappel.,C'est de epochs Deuxième configuration testée dans l'expérience.
1000 Résultats du diagnostic pour la période
On peut faire passer le nombre de neurones de 1 Ajouter à 2.Cela devrait améliorer la capacité d'apprentissage du réseau.
On peut changerrun() En fonctionn_neurons Variables Pour faire ça .
n_neurons = 2
L'exécution de cette configuration affiche la dernière période de chaque exécution RMSE Points.
Les résultats montrent que,Bonne performance globale,Mais pas très bien..
Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.
C'est plus révélateur.Il montre les testsRMSEChute rapide de,À peu près à500-750Période,Un point d'inflexion montre le testRMSELa montée de,C'est vrai pour presque toutes les opérations..En même temps,L'ensemble de données de formation montre une baisse continue jusqu'à la dernière phase.
Ce sont des signes que l'ensemble de données d'entraînement est trop ajusté..
1000 Période et 2 Le diagnostic des neurones
Voyons si cette tendance va continuer avec plus de neurones.
Cette section vise à augmenter le nombre de neurones 3 Même configuration pour.
n_neurons = 3
L'exécution de cette configuration affiche la dernière période de chaque exécution RMSE Points.
Les résultats sont similaires à ceux de la section précédente;On ne voit pas 2 Ou 3 La fin des neurones epoch Différences générales entre les scores d'essai.3 Le score final d'entraînement pour les neurones semble vraiment faible,Cela peut indiquer une accélération excessive de l'ajustement.
Les points d'inflexion de l'ensemble de données de formation semblent être plus élevés que 2 Les expériences sur les neurones ont eu lieu plus tôt,Peut - être dans 300-400 Période.
L'augmentation du nombre de ces neurones pourrait bénéficier de changements supplémentaires qui ralentissent le rythme d'apprentissage..Par exemple, en utilisant la méthode de régularisation,Par exemple: dropout,Réduire la taille des lots,Réduire le nombre de périodes d'entraînement.
Des tests et de la formation ont également été créés pour chaque période. RMSE Diagramme linéaire des fractions.
1000 Période et 3 Le diagnostic des neurones
Résumé des résultatsEncore une fois,Nous pouvons comparer objectivement les effets de l'augmentation du nombre de neurones tout en maintenant toutes les autres configurations de réseau.
Dans cette section,Nous répétons chaque expérience 30 Une fois,Et testera la moyenne RMSE Performance et 1 À 5 Pour comparer le nombre de neurones.
# Exécuter une expérience répétée
# Convertir les données en stationnaire
ra_lus = sees.values
difvles = difece(rwvlus, 1)
# Conversion des données en apprentissage supervisé
sups_ales = supvor.values
# Diviser les données en ensembles de formation et d'essai
# Échelle de transformation des données
trainsld,tet_scld = scale(tain, est)
# Expérience de fonctionnement
err_scres = list()
# Modèle d'ajustement
trntied = tr_aed[2:, :]
lsmel = lstm(tritid, bahze, 1000, eons)
# Prévoir l'ensemble des données de formation pour établir l'état de prévision
trrehap = ti_rimed[:, 0].rehae(len(train_trimmed), 1, 1)
prdict(trahpe,bahe=achze)
# Ensemble de données d'essai prédictives
tet_sape = tetsaled[:,0:-1]
tetrehae = tesespe.reshape(len(tst_ehape), 1, 1)
prect(tes_rhpe,bath_ize=btchsze)
X = ts_cld[i, 0:-1]
# Inverser l'échelle
yhat = ivertle(scaer, X, yhat)
# Inverse la différence
yht = inversefrce(rw_values, hat, len(tet_saed)+1-i)
# Rapport sur le rendement
rmse = sqrt(men_sureero(aw_vue[-12:], preiions))
# Charger l'ensemble de données
# L'expérience
# Changer les neurones
Neurones = [1, 2, 3, 4, 5]
boxplot()
L'exécution de l'expérience produira des statistiques sommaires pour chaque configuration.
En termes de performance moyenne seulement,Les résultats montrent que 1 Le réseau neuronal est configuré à 1000 - Oui. epoch A la meilleure performance,La taille du lot est 4.
Le diagramme de la moustache de la boîte montre une tendance évidente à la performance de l'ensemble d'essai médian,Où l'augmentation des neurones conduit au test RMSE Augmentation correspondante de.
Diagramme à barres résumant les résultats neuronaux
Dans ce tutoriel,Nous avons fait beaucoup de travail sur l'ensemble de données sur les ventes de shampooing LSTM L'expérience.
En général,Il semble y avoir un état LSTM Configuré 1 Neurones,La taille du lot est 4,Et entraîné 1000 - Oui. epochs Ça pourrait être une bonne configuration.
Les résultats montrent également que,Peut - être que cette taille de lot est 1 Et s'adapte à plus epoch La configuration de.
L'ajustement du réseau neuronal est un travail empirique difficile,Il s'est avéré LSTM Et ça ne fait pas exception.
Ce tutoriel montre des études diagnostiques et des tests sur le comportement de configuration au fil du temps RMSE Les avantages de la recherche objective.
Cette section énumère quelques idées pour étendre les expériences effectuées dans ce tutoriel.
Si vous Explorez l'un d'eux,Veuillez indiquer vos résultats dans vos commentaires;J'adorerais voir ce que tu as trouvé..
Dans ce tutoriel,Vous avez appris à étudier systématiquement LSTM Configuration du Réseau pour la prévision des séries chronologiques.
Plus précisément,,Tu as appris.:
Vos ajustements LSTM Ou avez - vous des questions sur ce tutoriel?
Posez vos questions dans les commentaires ci - dessous,Nous ferons de notre mieux pour répondre.