web-dev-qa-db-fra.com

Erreur "Impossible d'interpréter l'identifiant de l'optimiseur" dans Keras

J'ai eu cette erreur lorsque j'ai essayé de modifier le paramètre de vitesse d'apprentissage de l'optimiseur SGD dans Keras. Ai-je oublié quelque chose dans mes codes ou mon Keras n'a pas été installé correctement? 

Voici mon code:

from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, Flatten, GlobalAveragePooling2D, Activation
import keras
from keras.optimizers import SGD

model = Sequential()
model.add(Dense(64, kernel_initializer='uniform', input_shape=(10,)))
model.add(Activation('softmax'))
model.compile(loss='mean_squared_error', optimizer=SGD(lr=0.01), metrics= ['accuracy'])*

et voici le message d'erreur:

Traceback (dernier appel passé): Fichier "C:\TensorFlow\Keras\ResNet-50\test_sgd.py", ligne 10, dans model.compile (loss = 'mean_squared_error', optimiseur = SGD (lr = 0.01), métriques = ['précision']) Fichier "C:\Utilisateurs\nsugiant\AppData\Local\Programmes\Python\Python35\lib\sites-packages\tensorflow\python\keras_impl\keras\models.py", ligne 787, en compilation ** kwargs) Fichier "C:\Utilisateurs\nsugiant\AppData\Programmes\Python\Python\Python35\lib\site-packages\tensorflow\python\keras_impl\keras\moteur\training.py", ligne 632, en compilation self.optimizer = optimizers.get (optimizer) Fichier "C:\Utilisateurs\nsugiant\AppData\Local\Programmes\Python\Python35\lib\site-packages\tensorflow\python\keras_impl\keras\optimizers.py",. . ligne 788, dans get raise ValueError ('Impossible d'interpréter l'identifiant de l'optimiseur:', identifiant) ValueError: ('Impossible d'interpréter l'identifiant de l'optimiseur:', )

4
Nehemia

J'ai récemment fait face à un problème similaire. 

La raison en est que vous utilisez tensorflow.python.keras api pour le modèle, les calques et keras.optimizers pour SGD. Ce sont deux versions différentes de keras de tensorflow et de keras pures. Ils ne pouvaient pas travailler ensemble. Vous devez tout changer en une version. Alors ça devrait marcher. :) 

J'espère que cela t'aides.

11
Priyanka Chaudhary

Je suis un peu en retard ici, votre problème est que vous avez manqué l'API keras et keras de Tensorflow dans votre code. L'optimiseur et le modèle doivent provenir de la même définition de couche. Utilisez l'API Keras pour tout comme ci-dessous:

from keras.models import Sequential
from keras.layers import Dense, Dropout, LSTM, BatchNormalization
from keras.callbacks import TensorBoard
from keras.callbacks import ModelCheckpoint
from keras.optimizers import adam

# Set Model
model = Sequential()
model.add(LSTM(128, input_shape=(train_x.shape[1:]), return_sequences=True))
model.add(Dropout(0.2))
model.add(BatchNormalization())

# Set Optimizer
opt = adam(lr=0.001, decay=1e-6)

# Compile model
model.compile(
    loss='sparse_categorical_crossentropy',
    optimizer=opt,
    metrics=['accuracy']
)

J'ai utilisé Adam dans cet exemple. Veuillez utiliser votre optimiseur approprié conformément au code ci-dessus.

J'espère que cela t'aides.

1
Anju313

Essayez de changer vos lignes d'importation en

from keras.models import Sequential
from keras.layers import Dense, ...

Vos importations me semblent un peu étranges. Peut-être pourriez-vous en dire plus à ce sujet. 

0
DocDriven