【问题标题】:Error importing BERT: module 'tensorflow._api.v2.train' has no attribute 'Optimizer'导入 BERT 时出错:模块 'tensorflow._api.v2.train' 没有属性 'Optimizer'
【发布时间】:2020-07-29 16:43:14
【问题描述】:

我尝试在 Google Colab 中使用 bert-tensorflow,但出现以下错误:

----------------------------------- ---------------------------- AttributeError Traceback(最近调用 最后)在() 1个进口伯特 ----> 2 from bert import run_classifier_with_tfhub # run_classifier 3 from bert导入优化 4 from bert import tokenization

1 帧 /usr/local/lib/python3.6/dist-packages/bert/optimization.py 在 () 85 86 ---> 87 类 AdamWeightDecayOptimizer(tf.train.Optimizer): 88 """一个基本的 Adam 优化器,包括“正确的”L2 权重衰减。""" 89

AttributeError: 模块 'tensorflow._api.v2.train' 没有属性 '优化器'

这是我试过的代码:

  1. 安装库:

!pip install --upgrade --force-reinstall tensorflow !pip install --upgrade --force-reinstall tensorflow-gpu !pip install tensorflow_hub !pip install sentencepiece !pip install bert-tensorflow

  1. 运行此代码:

from sklearn.model_selection import train_test_split import pandas as pd from datetime import datetime from tensorflow.keras import optimizers import bert from bert import run_classifier from bert import optimization from bert import tokenization

我也试过 import tensorflow.compat.v1 as tf tf.disable_v2_behavior()

但是遇到了同样的错误。

【问题讨论】:

    标签: python tensorflow classification bert-language-model


    【解决方案1】:

    我通过安装 tensorflow 1.15 而不是 2.0 在 google colab 中解决了这个问题。我只会收到警告。

    !pip install tensorflow-gpu==1.15.0
    

    【讨论】:

      【解决方案2】:

      import tensorflow as tf

      print(tf.__version__)

      !pip uninstall tensorflow==2.2.0

      !pip install tensorflow==1.15.0

      !pip install bert-tensorflow

      试试这个。它对我同样的问题有用

      【讨论】:

        【解决方案3】:

        Github 也已报告和讨论此问题,

        尝试更改第 87 行的代码(请参阅您的错误消息:/usr/local/lib/python3.6/dist-packages/bert/optimization.py),来自

        tf.train.Optimizer
        # change to
        tf.keras.optimizers.Optimizer
        

        您使用的是 TF 1.x 还是 TF 2.0?一般来说,tf.train.Optimizer 在 TF 2.0 中已被弃用,您需要使用tf.compat.v1.Optimizer(然后会显示弃用消息,但它只是一个警告)。在 TF 2.0 中,推荐使用 Keras optimziers tf.keras.optimizers.*

        【讨论】:

          【解决方案4】:

          我在自己的colab notebook中做了一些实验(下次请提供链接),发现报错信息中有

          class AdamWeightDecayOptimizer(tf.train.Optimizer):
          

          这是类的标题。但是没有像tf.train.optimizer 这样的东西,它应该是:

          class AdamWeightDecayOptimizer(tf.compat.v1.train.Optimizer):
          

          与 (lol) 完全相同的行存在确切问题的链接是 here

          【讨论】:

          • 谢谢@neel 的回答,我在问这个问题之前已经检查了链接,正如你在last comment 中看到的那样,问题还没有解决。
          • @BelkacemThiziri 做我发布的内容后出现什么错误?
          • 我在run_classifier 上遇到了另一个错误,比如tensorflow object has no attribute FLAGS,当我更改为tf.compat.v1 时,我知道这是一个兼容性问题,但当我只执行import tensorflow 时它也失败了。我很困惑:/
          • @BelkacemThiziri 如果您不发布整个错误回溯,我们将无法帮助您......
          猜你喜欢
          • 2020-07-05
          • 1970-01-01
          • 2021-10-08
          • 1970-01-01
          • 1970-01-01
          • 2022-01-12
          • 2021-09-24
          • 2020-10-03
          相关资源
          最近更新 更多