'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
Solution 1:[1]
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
Solution 2:[2]
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.
Solution 3:[3]
from tensorflow.keras.optimizers import Adam
Try this in the 4th line(or just replace it with the above line). It worked for me.
Solution 4:[4]
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.
Solution 5:[5]
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"])
Solution 6:[6]
In the fourth line, just make from keras.optimizers import Adam
. It should work perfectly fine!
Solution 7:[7]
from keras.optimizer_v2 import adam
#then call Adam from adam
adam.Adam(...);
Solution 8:[8]
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
.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Aaditya Ura |
Solution 2 | ALI Q SAEED |
Solution 3 | Saptarshi Basu |
Solution 4 | Miguel Conde |
Solution 5 | Yuchao Jiang |
Solution 6 | Daniel Walker |
Solution 7 | Alihdr |
Solution 8 |