71

I am trying to import Keras but I get the following error:

ImportError: cannot import name 'adam' from 'keras.optimizers' (/usr/local/lib/python3.8/dist-packages/keras/optimizers/__init__.py)

The import is invoked here:

from tensorflow import keras
from keras.layers import Conv2D, Input, MaxPool2D,Flatten, Dense, Permute, GlobalAveragePooling2D
from keras.models import Model
from keras.optimizers import adam
import numpy as np
import pickle
import keras
import cv2
import sys
import dlib
import os.path
from keras.models import Sequential
from keras.applications.resnet50 import ResNet50
from keras.applications.resnet50 import Dense
from keras.optimizers import Adam
import pickle
import numpy as np
import cv2
import os
from keras.layers import Dropout

I am sure Keras is installed along with Tensorflow:

python3 -c 'import keras; print(keras.__version__)' // 2.4.3
dclipca
  • 1,739
  • 1
  • 16
  • 51

11 Answers11

131

There are two types of modules -

  1. keras
  2. tensorflow.keras

Here we need to use tensorflow.keras

You need to import Adam (With Capital A) from tensorflow - Keras ( Not only Keras).

from tensorflow.keras.optimizers import Adam

from tensorflow.keras.optimizers import Adam # - Works
from tensorflow.keras.optimizers import adam # - Does not work
from keras.optimizers import Adam            # - Does not work
from keras.optimizers import adam            # - Does not work
Aaditya Ura
  • 12,007
  • 7
  • 50
  • 88
Anurag Sundaram
  • 1,326
  • 1
  • 5
  • 2
31

recently, in the latest update of Keras API 2.5.0 , importing Adam optimizer shows the following error:

from keras.optimizers import Adam
ImportError: cannot import name 'Adam' from 'keras.optimizers' 

instead use the following for importing optimizers (i.e. Adam) :

from keras.optimizers import adam_v2
optimizer = adam_v2.Adam(learning_rate=lr, decay=lr/epochs)
Model.compile(loss='--',  optimizer=optimizer  , metrics=['--'])

for more details, please have a look at : https://programmerah.com/keras-nightly-import-package-error-cannot-import-name-adam-from-keras-optimizers-29815/

hopefully, this helps.

ALI Q SAEED
  • 501
  • 5
  • 6
24

from tensorflow.keras.optimizers import Adam

Try this in the 4th line(or just replace it with the above line). It worked for me.

Saptarshi Basu
  • 8,640
  • 4
  • 39
  • 58
Varuni A S
  • 341
  • 2
  • 2
19

You can do two things:

  1. Go with tensorflow

    from tensorflow.keras.optimizers import Adam

This might cause you to change other keras.* modules to tensorflow.kerar.* modules.

  1. Stay at keras

    from keras.optimizers_v1 import Adam

Adam has been shifted to optimizer_v1 module.

Miguel Conde
  • 813
  • 10
  • 22
Prateek Thakur
  • 199
  • 1
  • 2
9

The error came from an older version of keras, in the newer version, you don't have to import Adam, it can be specified using the quote, i.e.:

model.compile(optimizer= "adam", loss='mse', metrics=[psnr, "accuracy"])
Yuchao Jiang
  • 3,522
  • 30
  • 23
  • 2
    If you would like to have more variety, such as: `model.compile(optimizer = keras.optimizers.Adam(lr=0.001, decay=0.9), loss='mse', metrics=[get_rmse])` – Yuchao Jiang Jun 08 '21 at 02:13
  • Throws error `ValueError: Could not interpret optimizer identifier: ` – Adi Jun 23 '21 at 19:08
7

In the fourth line, just make from keras.optimizers import Adam. It should work perfectly fine!

Daniel Walker
  • 6,380
  • 5
  • 22
  • 45
6
from keras.optimizer_v2 import adam

Then call Adam from adam

adam.Adam(...);
Alihdr
  • 241
  • 2
  • 9
5

The following worked for me:

# importing
from keras.optimizers import adam_v2
# to use it
adam_v2.Adam(...)

I am on a virtual environment running tensorflow-2.6.0 (CPU version, pip installed) with Python3.8.7.

hafiz031
  • 2,236
  • 3
  • 26
  • 48
1

I am using
Name: keras Version: 2.8.0

from keras.optimizers import adam_v2

Then to use the adam optimizer (use tf.keras.optimizers.Adam):

model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.0001), loss='sparse_categorical_crossentropy', metrics=['accuracy'])
XdoesTech
  • 21
  • 4
0

Just use this line for import Adam

from tensorflow.keras.optimizers import Adam
0

I had a similar problem after a whole day lost on this. I found that just:

from tensorflow.python.keras.optimizers import adam_v2

adam_v2.Adam(learning_rate=0.0001, clipnorm=1.0, clipvalue=0.5)

works for me (i had v2.11.0 of tensorflow).

I also find these other optimizers in tensorflow.python.keras.optimizers:

'adadelta_v2', 'adagrad_v2', 'adam_v2', 'adamax_v2','nadam_v2','rmsprop_v2',

that you can use as

from tensorflow.python.keras.optimizers import rmsprop_v2

rmsprop_v2.RMSprop(learning_rate=0.0001)

AntonioV
  • 1
  • 3