Search code examples
pythontensorflowclassificationbert-language-model

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


I tried to use bert-tensorflow in Google Colab, but I got the following error:

--------------------------------------------------------------------------- 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'

Here is the code I tried:

  1. Install the libraries:

!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. Run this code:

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

I've also tried import tensorflow.compat.v1 as tf tf.disable_v2_behavior()

But got the same error.


Solution

  • I did some experimentation in my own colab notebook (please provide a link next time) and I found that in the error message, there was

    class AdamWeightDecayOptimizer(tf.train.Optimizer):
    

    this being the header of the class. But there is nothing like tf.train.optimizer instead it should be :

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

    The link where there is exact issue with (lol) exact same line is here