1

J'ai formé et testé un réseau neuronal Feed Forward en utilisant Keras en Python avec un jeu de données. Mais chaque fois, afin de reconnaître un nouvel ensemble de test avec des données externes (externe car les données ne sont pas incluses dans l'ensemble de données), je dois reformer le Feed Forward Neural Network pour calculer l'ensemble de test. Par exemple chaque fois que je dois faire:Test du réseau de neurones en utilisant Keras Python

model.fit (data, output_data) 
prediction=model.predict_classes(new_test) 
print "Prediction : " prediction 

Obtenir une sortie correcte:

Prediction: [1 2 3 4 5 1 2 3 1 2 3] 
    Acc: 100% 

Maintenant, je tester une nouvelle série de test, à savoir « new_test2.csv » sans nouveau re-formation, tout en utilisant ce que le réseau a appris Je pense aussi à une sorte de reconnaissance en temps réel.

Comment je devrais faire cela? Avec un modèle bien formé

Merci à l'avance

Répondre

2

Dans votre fichier de formation, vous pouvez enregistrer le modèle en utilisant

model.save('my_model.h5') 

Plus tard, chaque fois que vous voulez tester, vous pouvez le charger avec

from keras.models import load_model 
model = load_model('my_model.h5') 

Ensuite, vous pouvez appeler model.predict et autres joyeusetés.

3

vous pouvez faire des prédictions sur les nouvelles données. Vous n'avez pas besoin de vous recycler car (espérons-le) votre modèle peut généraliser l'apprentissage de données non vues et atteindre une précision comparable.

se nourrissent seulement dans les données de « new_test2.csv » à votre fonction prédire:

prediction=model.predict_classes(content_of_new_test2) 

Il est évident que vous avez besoin des données du même type et les classes. En plus de cela, vous devez appliquer toutes les transformations aux nouvelles données de la même manière que vous avez pu transformer les données sur lesquelles vous avez entraîné votre modèle.

Si vous voulez des prévisions en temps réel Vous pouvez configurer une API avec Flask:

http://flask.pocoo.org/

En ce qui concerne la terminologie et la méthode correcte de la formation:

Vous le train sur un (set formation par exemple 70% de toutes les données que vous avez).

Vous valider votre formation avec une validation mis (par exemple 15% de vos données). Vous utilisez les valeurs de précision et de perte de votre formation pour ajuster vos hyperparamètres.

Vous pouvez ensuite évaluer vos modèles performance finale en prédisant les données de votre test mis (à nouveau 15% de vos données). Cela doit être des données, votre réseau n'a jamais été vu et n'a pas été utilisé par vous pour optimiser les paramètres d'entraînement.

Ensuite, vous pouvez prédire sur les données de production.

Si vous souhaitez enregistrer votre utilisation du modèle formé ce (tiré de la documentation Keras):

from keras.models import load_model 

model.save('my_model.h5') # creates a HDF5 file 'my_model.h5' 
del model # deletes the existing model 

# returns a compiled model 
# identical to the previous one 
model = load_model('my_model.h5') 

https://keras.io/getting-started/faq/#how-can-i-save-a-keras-model

+0

Merci pour votre réponse. Vous pouvez penser à un script qui inclut tous les trains et le code de test pour tester de nouvelles entrées. Avec un seul script, j'ai à chaque fois recyclé le réseau pour prédire la sortie du nouvel ensemble de test. Ma demande précédente concerne une sorte de comment je devrais faire, enregistrer/rappeler le réseau de neurones formés pour tester le nouvel ensemble de données. Fondamentalement, j'ai besoin de quelque chose qui stocke mon réseau et essaie de reconnaître quelque chose de ses connaissances. J'espère avoir été clair. @petezurich –

+0

De votre question et de commentaire il n'est pas tout à fait clair pour moi si votre méthode de fractionnement de vos données dans le train, de valider et de tester les données est correcte. Voir ma description dans ma réponse. Il est très important de procéder comme ça, sinon vous obtiendrez de mauvais résultats. – petezurich

+1

Pour sortir de votre façon de corriger le problème sous-jacent ... (+1) –