2017-09-10 6 views
0

Je construis un réseau de neurones simple en utilisant keras.ValueError: littéral invalide pour float() Keras

Chaque élément des données d'apprentissage a 100 dimensions, et je lis les étiquettes des éléments à partir d'un fichier texte.

f = open('maleE', "rt") 
labelsTrain = [line.rstrip() for line in f.readlines()] 
f.close() 

Les étiquettes sont des chaînes qui ont cette structure: number_text

Pour adapter le modèle sur les données de formation:

model.fit(train, labelsTrain, epochs= 20000, batch_size= 1350) 

Et je reçois l'erreur suivante:

File "DNN.py", line 112, in <module> 
    model.fit(train, labelsTrain, epochs=20000, batch_size=1350) 
    File "/Users/renzo/PyEnvironments/tensorKeras/lib/python2.7/site-packages/keras/models.py", line 867, in fit 
    initial_epoch=initial_epoch) 
    File "/Users/renzo/PyEnvironments/tensorKeras/lib/python2.7/site-packages/keras/engine/training.py", line 1598, in fit 
    validation_steps=validation_steps) 
    File "/Users/renzo/PyEnvironments/tensorKeras/lib/python2.7/site-packages/keras/engine/training.py", line 1183, in _fit_loop 
    outs = f(ins_batch) 
    File "/Users/renzo/PyEnvironments/tensorKeras/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py", line 2273, in __call__ 
    **self.session_kwargs) 
    File "/Users/renzo/PyEnvironments/tensorKeras/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 889, in run 
    run_metadata_ptr) 
    File "/Users/renzo/PyEnvironments/tensorKeras/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1087, in _run 
    np_val = np.asarray(subfeed_val, dtype=subfeed_dtype) 
    File "/Users/renzo/PyEnvironments/tensorKeras/lib/python2.7/site-packages/numpy/core/numeric.py", line 531, in asarray 
    return array(a, dtype, copy=False, order=order) 
ValueError: invalid literal for float(): 225_sokode 

L'étiquette est l'élément 279 d'une liste de 378 étiquettes.

+0

Une de vos entrées semble avoir un caractère qui n'est pas un nombre flottant valide. –

Répondre

0

Tout d'abord, choisissez un nom unique pour chacune de vos classes. Je dis cela parce que je ne comprends pas ce qu'est le number dans vos étiquettes de classe (si ce n'est pas la même chose pour chaque classe, utilisez str.split() pour garder le text). Ensuite, vous devriez encoder vos étiquettes de chaîne. Par exemple, voir this post pour le codage à chaud des étiquettes.

+0

Encodage des étiquettes de chaîne a travaillé pour moi. – Ren91