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

时间:2020-04-16 12:30:46

标签: python tensorflow classification bert-language-model

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

--------------------------------------------------- ---------------------------- AttributeError Traceback(最近一次调用 最后)在() 1个进口伯特 ----> 2从bert导入run_classifier_with_tfhub#run_classifier 3从bert导入优化 4来自bert导入令牌化

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

但是有同样的错误。

4 个答案:

答案 0 :(得分:3)

我在自己的colab笔记本中进行了一些实验(请提供下一次链接),发现错误消息中有

class AdamWeightDecayOptimizer(tf.train.Optimizer):

这是该类的标题。但是没有类似tf.train.optimizer的东西应该是:

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

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

答案 1 :(得分:3)

import tensorflow as tf

print(tf.__version__)

!pip uninstall tensorflow==2.2.0

!pip install tensorflow==1.15.0

!pip install bert-tensorflow

尝试一下。对于同一问题它对我有用

答案 2 :(得分:3)

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

!pip install tensorflow-gpu==1.15.0

答案 3 :(得分:0)

此问题也已在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.*