【问题标题】:ImportError: cannot import name 'adam' from 'keras.optimizers'ImportError:无法从“keras.optimizers”导入名称“adam”
【发布时间】:2020-07-03 02:19:46
【问题描述】:

我正在尝试导入 Keras,但出现以下错误:

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

在此处调用导入:

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

我确信 Keras 与 Tensorflow 一起安装:

python3 -c 'import keras; print(keras.__version__)' // 2.4.3

【问题讨论】:

  • 它的亚当,大写,不是亚当

标签: keras


【解决方案1】:

有两种类型的模块-

  1. keras
  2. tensorflow.keras

这里我们需要用到tensorflow.keras

您需要从 tensorflow - Keras(不仅是 Keras)导入 Adam(大写 A)。

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

【讨论】:

    【解决方案2】:

    最近在 Keras API 2.5.0 的最新更新中,导入 Adam 优化器出现如下错误:

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

    改为使用以下内容来导入优化器(即 Adam):

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

    更多详情,请查看: https://programmerah.com/keras-nightly-import-package-error-cannot-import-name-adam-from-keras-optimizers-29815/

    希望这会有所帮助。

    【讨论】:

    • 很高兴这个答案帮助了这里的很多人。
    【解决方案3】:

    from tensorflow.keras.optimizers import Adam

    在第 4 行试试这个(或者用上面的行替换它)。它对我有用。

    【讨论】:

      【解决方案4】:

      错误来自旧版本的keras,在新版本中,您不必导入Adam,可以使用引号指定,即:

      model.compile(optimizer= "adam", loss='mse', metrics=[psnr, "accuracy"])
      

      【讨论】:

      • 如果您想拥有更多品种,例如:model.compile(optimizer = keras.optimizers.Adam(lr=0.001, decay=0.9), loss='mse', metrics=[get_rmse])
      • 抛出错误ValueError: Could not interpret optimizer identifier: <tensorflow.python.keras.optimizer_v2.adam.Adam object at 0x000001F91A8BA820>
      【解决方案5】:

      你可以做两件事:

      1. 使用张量流

        from tensorflow.keras.optimizers import Adam

      这可能会导致您将其他 keras.* 模块更改为 tensorflow.kerar.* 模块。

      1. 留在 keras

        from keras.optimizers_v1 import Adam

      Adam 已转移到 optimizer_v1 模块。

      【讨论】:

        【解决方案6】:

        在第四行,只写from keras.optimizers import Adam。它应该工作得很好!

        【讨论】:

        • 它不起作用。 cannot import name 'Adam' from 'keras.optimizers'
        【解决方案7】:

        以下内容对我有用:

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

        我在一个虚拟环境中运行tensorflow-2.6.0CPU 版本,已安装pip)和Python3.8.7

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-08
          • 2021-10-26
          • 1970-01-01
          • 2022-01-22
          • 2021-06-30
          • 2020-10-19
          • 2018-08-13
          • 2015-01-26
          相关资源
          最近更新 更多