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

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 
1

8 Answers

There are two types of modules -

  • keras
  • 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 
    0

    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.

    1

    from tensorflow.keras.optimizers import Adam

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

    You can do two things:

  • Go with tensorflow

    from tensorflow.keras.optimizers import Adam

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

  • Stay at keras

    from keras.optimizers_v1 import Adam

  • Adam has been shifted to optimizer_v1 module.

    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"]) 
    2

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

    1
    from keras.optimizer_v2 import adam 

    Then call Adam from adam

    adam.Adam(...); 

    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.

    ncG1vNJzZmirpJawrLvVnqmfpJ%2Bse6S7zGiorp2jqbawutJobWtvYGyCdoSOoqSpp6KpsrO%2BzqtknJmeo7y1ecimp6iqpGK7ornEZpidmZ1is7O7zGainqqRqHqwvNOipKKylafA