wake-up-neo.com

Fehler in Keras "Optimizer-ID konnte nicht interpretiert werden"

Ich habe diesen Fehler erhalten, als ich versuchte, den Parameter für die Lernrate des SGD-Optimierers in Keras zu ändern. Habe ich etwas in meinen Codes vermisst oder mein Keras wurde nicht richtig installiert? 

Hier ist mein 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'])*

und hier ist die Fehlermeldung:

Traceback (letzter Anruf zuletzt): Datei "C:\TensorFlow\Keras\ResNet-50\test_sgd.py", Zeile 10, in model.compile (loss = 'mean_squared_error', Optimierer = SGD (lr = 0,01), Metriken = ['Genauigkeit']) Datei "C:\Benutzer\nsugiant\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\keras_impl\keras\models.py", Zeile 787 in Kompilierung ** kwargs) Datei "C:\Benutzer\nsugiant\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\keras_impl\keras\engine\training.py", Zeile 632 in Kompilierung self.optimizer = optimizers.get (Optimierer) Datei "C:\Benutzer\nsugiant\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\keras_impl\keras\optimizers.py", Zeile 788, in get raise ValueError ('Optimizer-ID konnte nicht interpretiert werden', Bezeichner) ValueError: ('Optimizer-ID konnte nicht interpretiert werden:', )

4
Nehemia

Ich war kürzlich mit einem ähnlichen Problem konfrontiert. 

Der Grund ist, dass Sie tensorflow.python.keras api für Modelle und Layer und keras.optimizers für SGD verwenden. Es handelt sich um zwei verschiedene Kerasversionen von Tensorflow und Pure Keras. Sie konnten nicht zusammenarbeiten. Sie müssen alles auf eine Version umstellen. Dann sollte es klappen. :) 

Hoffe das hilft.

11

Dieses Problem wird hauptsächlich durch verschiedene Versionen verursacht. Die Version von tensorflow.keras stimmt möglicherweise nicht mit der von keras überein. So verursacht der Fehler wie von @Priyanka erwähnt.

Wenn dieser Fehler auftritt, gebe ich den Namen des Optimierers als Zeichenfolge ein und das Backend berechnet ihn. Zum Beispiel statt

tf.keras.optimizers.Adam

oder

keras.optimizers.Adam

Ich mache

model.compile(optimizer= 'adam' , loss= keras.losses.binary_crossentropy, metrics=['accuracy'])
1
Sachin Kumar

Ausführen des Keras-Dokumentationsbeispiels https://keras.io/examples/cifar10_cnn/ und Installieren der neuesten Keras- und Tensor-Flow-Versionen

(zum Zeitpunkt dieses Schreibens Tensorflow 2.0.0a0 und Keras Version 2.2.4)

Ich musste den Optimierer, den die Keras im Beispiel verwenden, explizit importieren, insbesondere die Zeile über dem Beispiel:

opt = tensorflow.keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)

wurde ersetzt durch

from tensorflow.keras.optimizers import RMSprop

opt = RMSprop(lr=0.0001, decay=1e-6)

In der aktuellen Version wurde aus der API "pleite" und "keras.stuff" in vielen Fällen "tensorflow.keras.stuff".

1
partizanos

Ich bin etwas spät dran. Ihr Problem ist, dass Sie Tensorflow-Keras und -Keras-API in Ihrem Code vermisst haben. Der Optimierer und das Modell sollten von derselben Ebenendefinition stammen. Verwenden Sie die Keras-API für alles wie folgt:

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']
)

Ich habe in diesem Beispiel Adam verwendet. Bitte verwenden Sie Ihren entsprechenden Optimierer gemäß dem obigen Code.

Hoffe das hilft.

1
Anju313

Ändern Sie Ihre Importlinien in

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

Ihre Importe erscheinen mir etwas seltsam. Vielleicht könnten Sie darauf näher eingehen. 

0
DocDriven

Gib einfach

optimizer = 'sgd' / 'RMSprop'
0
manish