导入 BERT 时出错:模块 'tensorflow._api.v2.train' 没有属性 'Optimizer'

Error importing BERT: module 'tensorflow._api.v2.train' has no attribute 'Optimizer'

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

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in () 1 import bert ----> 2 from bert import run_classifier_with_tfhub # run_classifier 3 from bert import optimization 4 from bert import tokenization

1 frames /usr/local/lib/python3.6/dist-packages/bert/optimization.py in () 85 86 ---> 87 class AdamWeightDecayOptimizer(tf.train.Optimizer): 88 """A basic Adam optimizer that includes "correct" L2 weight decay.""" 89

AttributeError: module 'tensorflow._api.v2.train' has no attribute 'Optimizer'

这是我试过的代码:

  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()

但是得到同样的错误。

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

class AdamWeightDecayOptimizer(tf.train.Optimizer):

这是 class 的 header。但是没有什么比 tf.train.optimizer 更应该是:

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

link 与 (lol) 完全相同的行存在确切问题的地方是 here

此问题已在 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 优化器tf.keras.optimizers.*

import tensorflow as tf

print(tf.__version__)

!pip uninstall tensorflow==2.2.0

!pip install tensorflow==1.15.0

!pip install bert-tensorflow

试试这个。它为我解决了同样的问题

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

!pip install tensorflow-gpu==1.15.0