Après avoir résolu mon problème de forme d'entrée j'ai exécuté mon programme, le problème est que la perte totale imprimée par le programme est bien trop élevée (si je compare par exemple à celle du quickstart Didacticiel).Python TFlearn - Perte trop élevée
Mon objectif est de prédire l'encombrement de l'entrée future en utilisant des données passées (j'ai plus de 10M d'entrée avec le score marqué) donc je ne devrais pas avoir de problème avec la formation.
Voici mon code:
import numpy as np
import tflearn
# Load CSV file, indicate that the first column represents labels
from tflearn.data_utils import load_csv
data, labels = load_csv('nowcastScaled.csv', has_header=True, n_classes=2)
# Preprocessing function
def preprocess(data):
return np.array(data, dtype=np.float32)
# Preprocess data
data = preprocess(data)
# Build neural network
net = tflearn.input_data(shape=[None, 2])
net = tflearn.fully_connected(net, 32)
net = tflearn.fully_connected(net, 32)
net = tflearn.fully_connected(net, 2, activation='linear')
data = np.reshape(data, (-1, 2))
labels = np.reshape(labels, (-1, 2))
net = tflearn.regression(net, optimizer='adam', learning_rate=0.001,
loss='categorical_crossentropy')
# Define model
model = tflearn.DNN(net)
# Start training (apply gradient descent algorithm)
model.fit(data, labels, n_epoch=15, batch_size=16, show_metric=True)
# Training
model.save('test_Model')
model.load('test_Model')
score = model.evaluate(data, labels, batch_size=16)
fichier excel Mon avoir ce genre de regard (colonne 2, 100 000 lignes)
calculed_at , congestion
1 , 56
2 , 21
C'est ce que les résultats ressemblent à (15 époque) :
Training samples: 50000
Validation samples: 0
....
--
Training Step: 40625 | total loss: 15.27961 | time: 17.659s
| Adam | epoch: 013 | loss: 15.27961 - acc: 0.7070 -- iter: 50000/50000
--
Training Step: 43750 | total loss: 15.66268 | time: 17.549s
| Adam | epoch: 014 | loss: 15.66268 - acc: 0.7247 -- iter: 50000/50000
--
Training Step: 46875 | total loss: 15.94696 | time: 18.037s
| Adam | epoch: 015 | loss: 15.94696 - acc: 0.7581 -- iter: 50000/50000
--
Avez-vous une idée de ce qui pourrait causer une telle perte? Cela semble étrange puisque la précision imprimée ne semble pas trop mauvaise. Merci de votre aide.
Éditer: Ça a semblé être un bon moment quand j'ai pris ces valeurs car quand j'ai essayé tout à l'heure j'avais une perte totale dépassant 280 (et une précision inférieure à 0,3 ou à peine supérieure).
cela vous dérangerait de partager le fichier csv à déboguer? –
Une chose qui me frappe immédiatement, c'est que c'est un réseau entièrement linéaire. Si vous regardez l'API de tflearn, votre activation est par défaut 'linear'. Changez-le en non-linéarité et voyez si cela fonctionne. En outre, puisqu'il s'agit d'une régression, pourquoi votre perte 'categorical_crossentropy'? Elaborer plus sur vos «données» et «labels» aiderait. – jkschin
@jkschin Je ne suis pas trop habitué à tflearn, j'ai essayé "softmax" au lieu de linéaire mais ce n'était pas mieux. Pour catégorical_crossentropy je l'ai utilisé parce qu'il était sur le tutoriel quickstart et je ne sais pas sur quelle base je devrais choisir l'un ou l'autre. Que voulez-vous dire en élaborant davantage sur les données et les étiquettes? –