Error module 'keras.optimizers' has no attribute 'RMSprop'

Viewed 23290

I am running this code below and it returned an error AttributeError: module 'keras.optimizers' has no attribute 'RMSprop'. I download tensorflow using pip install tensorflow.

from keras import layers
from keras import models

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',
                        input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

model.summary()

from keras import optimizers

model.compile(loss='binary_crossentropy', optimizer=optimizers.RMSprop(lr=1e-4), metrics=['acc'])

Could anyone please help explain to me what's wrong with this? Thank you for your time.

5 Answers

As you said, you installed tensorflow (which includes keras) via pip install tensorflow, and not keras directly. Installing keras via pip install keras is not recommended anymore (see also the instructions here).

This means that keras is available through tensorflow.keras. Instead of importing via from keras import optimizers, you should use from tensorflow.keras import optimizers.

You should instead write:

from tensorflow import keras
from keras import optimizers
optimizer=keras.optimizers.RMSprop(learning_rate=0.01)

I faced the same error, and I avoid it by importing optimizers like that :

from tensorflow.keras import optimizers

then I applied the RMSprop :

optimisers.RMSprop(...)

It works

from keras.optimizers import rmsprop_v2
model.compile(loss='binary_crossentropy', optimizer='rmsprop')

but I don't know why..

import tensorflow
from tensorflow.keras import optimizers
optimizer = tensorflow.keras.optimizers.RMSprop(lr=0.0003,decay=1e-6)

note RMSprop vs rmsprop

Related