2
votes

prédire avec Keras échoue en raison d'une configuration d'environnement défectueuse

Je ne parviens pas à faire prédire quoi que ce soit à Keras. Pas même dans ce modèle minimaliste:

model.predict(np.array([[0,0,0]]))

Tout se passe comme prévu jusqu'à la dernière ligne:

Epoch 1/1
1/1 [==============================] - 0s 448ms/step - loss: 0.2500 - acc: 1.0000
Traceback (most recent call last):

  File "<ipython-input-24-ee244a6c7287>", line 16, in <module>
    prediction = model.predict(test_input)

  File "E:\Programme\Anaconda3\lib\site-packages\keras\engine\training.py", line 1172, in predict
    steps=steps)

  File "E:\Programme\Anaconda3\lib\site-packages\keras\engine\training_arrays.py", line 304, in predict_loop
    outs.append(np.zeros(shape, dtype=batch_out.dtype))

TypeError: data type not understood

J'ai essayé encore et encore avec différents combinaisons de tableaux et de listes, mais soit il y a cette TypeError ou une ValueError, car la forme est fausse. Plusieurs réponses (comme ici ) suggèrent d'utiliser quelque chose comme

from keras.models import Sequential
from keras.layers import Dense
import numpy as np

inDim = 3
outDim = 1

model = Sequential()
model.add(Dense(5, input_dim=inDim, activation='relu'))
model.add(Dense(outDim, activation='sigmoid'))
model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])

test_input = np.zeros((1,inDim))
test_output = np.zeros((1,outDim))
model.fit(test_input, test_output)
prediction = model.predict(test_input)


1 commentaires

Veuillez corriger le titre de votre question avec quelque chose de détaillé et précis, un message d'erreur n'aide pas. Veuillez fournir quelques informations générales. Les commentaires sur ce que vous avez essayé ne sont pas très utiles sans plus de détails.


3 Réponses :


0
votes

J'ai collé votre code dans https://colab.research.google.com et cela n'a pas été fait ne me donnez pas d'erreur. (python2)

J'ai cependant reçu un avertissement concernant la conversion int en float.

J'essaierais de spécifier explicitement le dtype test_input comme dans:

test_input = np.zeros((1,inDim), dtype=float)

Puisque cela semble être le message d'erreur qui est affiché.


1 commentaires

L'argument dtype n'a rien changé. Mais en effet, le code fonctionne sur colab avec Python 3.6, ce que j'ai également installé. Les avertissements apparaissent indépendamment de l'appel de prédiction et comme l'appel d'ajustement fonctionne très bien, je ne suis pas sûr s'ils sont liés à mon erreur. Alors peut-être que mon installation est juste cassée? Je vais rechercher ceci et mettre à jour ici.



2
votes

Il s'est avéré que le code n'était pas le problème, mais il y avait un problème avec mon logiciel. Après les étapes suivantes, le code ci-dessus s'exécute sans erreurs ni avertissements:

  1. désinstaller anaconda
  2. installer anaconda
  3. créer un nouvel environnement
  4. installer les packages requis dans cet environnement (keras, tensorflow, spyder ...)
  5. exécuter du code dans cet environnement

0 commentaires

0
votes

J'ai désinstallé et installé à nouveau Anaconda Navigator et il a été corrigé.


0 commentaires