bert icon indicating copy to clipboard operation
bert copied to clipboard

Error: Trying to access flag --preserve_unused_tokens before flags were parsed

Open rv-ltran opened this issue 4 years ago • 21 comments

I have been using the following code fine until this morning. I got an error for using bert.run_classifier.convert_examples_to_features(test_InputExamples, label_list, MAX_SEQ_LENGTH, tokenizer)

Please let me know how to fix it

import pandas as pd
import bert
from bert import run_classifier
from bert import optimization
from bert import tokenization
from tensorflow.contrib import predictor
import pkg_resources
pkg_resources.get_distribution("bert-tensorflow").version


input_words = "Hello"

DATA_COLUMN = "message"
LABEL_COLUMN = "category_label"


test = pd.DataFrame({DATA_COLUMN: [input_words], LABEL_COLUMN : [0]})

BERT_MODEL_HUB = "https://tfhub.dev/google/bert_uncased_L-12_H-768_A-12/1"

def create_tokenizer_from_hub_module():
  """Get the vocab file and casing info from the Hub module."""
  with tf.Graph().as_default():
    bert_module = hub.Module(BERT_MODEL_HUB)
    tokenization_info = bert_module(signature="tokenization_info", as_dict=True)
    with tf.Session() as sess:
      vocab_file, do_lower_case = sess.run([tokenization_info["vocab_file"],
                                            tokenization_info["do_lower_case"]])

  return bert.tokenization.FullTokenizer(
      vocab_file=vocab_file, do_lower_case=do_lower_case)

tokenizer = create_tokenizer_from_hub_module()

test_InputExamples = test.apply(lambda x: bert.run_classifier.InputExample(guid=None, 
                                                               text_a = x[DATA_COLUMN], 
                                                               text_b = None, 
                                                               label = x[LABEL_COLUMN]), axis = 1)

# We'll set sequences to be at most 128 tokens long.
MAX_SEQ_LENGTH = 128
label_list = [6,1,2,4,3,5,0]
# Convert our test features to InputFeatures that BERT understands.
test_features = bert.run_classifier.convert_examples_to_features(test_InputExamples, label_list, MAX_SEQ_LENGTH, tokenizer)


Error:

INFO:tensorflow:Writing example 0 of 1
INFO:tensorflow:Writing example 0 of 1
UnparsedFlagAccessError: Trying to access flag --preserve_unused_tokens before flags were parsed.
---------------------------------------------------------------------------
UnparsedFlagAccessError                   Traceback (most recent call last)
<command-35675914> in <module>
     16 label_list = [6,1,2,4,3,5,0]
     17 # Convert our test features to InputFeatures that BERT understands.
---> 18 test_features = bert.run_classifier.convert_examples_to_features(test_InputExamples, label_list, MAX_SEQ_LENGTH, tokenizer)
     19 
     20 input_ids_list = [x.input_ids for x in test_features]

/databricks/python/lib/python3.7/site-packages/bert/run_classifier.py in convert_examples_to_features(examples, label_list, max_seq_length, tokenizer)
    778 
    779     feature = convert_single_example(ex_index, example, label_list,
--> 780                                      max_seq_length, tokenizer)
    781 
    782     features.append(feature)

/databricks/python/lib/python3.7/site-packages/bert/run_classifier.py in convert_single_example(ex_index, example, label_list, max_seq_length, tokenizer)
    394     label_map[label] = i
    395 
--> 396   tokens_a = tokenizer.tokenize(example.text_a)
    397   tokens_b = None

rv-ltran avatar Aug 07 '20 16:08 rv-ltran

I got same error, and it just happens today.

liuyibox avatar Aug 07 '20 20:08 liuyibox

Hey, this is an error caused due to a recent version update in bert. Change pip install bert-tensorflow to pip install bert-tensorflow==1.0.1 This will solve the error by installing the previous version. You can use the previous version till the developers fix this issue.

AMZzee avatar Aug 08 '20 14:08 AMZzee

Do you know when will it be fixed by the developer?

rv-ltran avatar Aug 10 '20 13:08 rv-ltran

I am getting same error, any progress on this?

deeptimittal97 avatar Aug 14 '20 01:08 deeptimittal97

Hey, this is an error caused due to a recent version update in bert. Change pip install bert-tensorflow to pip install bert-tensorflow==1.0.1 This will solve the error by installing the previous version. You can use the previous version till the developers fix this issue.

Degraded the bert-tensorflow version, resolved!

GauravSahani1417 avatar Aug 18 '20 10:08 GauravSahani1417

I got the same error today and downgrading bert-tf to 1.0.1 didn't fix it any other ideas? tf version 1.15.2 python version 3.6.10 anaconda environment in ubuntu OS 18.04

jasser94 avatar Aug 21 '20 09:08 jasser94

For me, downgrading bert-tensorflow from 1.0.4 to 1.0.1 solved the issue. I'm retraining a model from colab

dpinol avatar Sep 23 '20 08:09 dpinol

Any news here? Downgrading can't be the final solution 🤔

unre4l avatar Sep 29 '20 14:09 unre4l

For me, downgrading bert-tensorflow to 1.0.1 and downgrading tensorflow to 2.0.0 worked but w/ one work around. context: after downgrading the libraries and running my script, error was thrown: with tf.gfile.GFile(vocab_file, "r") as reader: AttributeError: module 'tensorflow' has no attribute 'gfile' So to fix this, I edited the code in site-packages/bert/tokenization.py where gfile was being called and replaced it with with tf.io.gfile.Gfile(vocab_file, "r") as reader it's not the cleanest, but it worked for me.

ekeleshian avatar Oct 05 '20 18:10 ekeleshian

Hey, this is an error caused due to a recent version update in bert. Change pip install bert-tensorflow to pip install bert-tensorflow==1.0.1 This will solve the error by installing the previous version. You can use the previous version till the developers fix this issue.

Thanks, it helps a lot!

DerekGrant avatar Dec 03 '20 08:12 DerekGrant

Is Google really using Bert in their search engine but ignoring updating it to TensorFlow 2.4? I have the error AttributeError: module 'tensorflow_estimator.python.estimator.api._v1.estimator' has no attribute 'TPUEstimator' and a search from Google led me here.

ZetiMente avatar Jan 12 '21 03:01 ZetiMente

same issue

yuvrajeyes avatar Jun 17 '21 08:06 yuvrajeyes

I got the same error today and downgrading bert-tf to 1.0.1 didn't fix it any other ideas? tf version 1.15.2 python version 3.6.10 anaconda environment in ubuntu OS 18.04

Actually you should restart the kernel

ahmedhassen7 avatar Sep 15 '21 12:09 ahmedhassen7

I'm having the exact same issue. When I try downgrading to 1.0.1 version I have this error :

with tf.gfile.GFile(vocab_file, "r") as reader: AttributeError: module 'tensorflow' has no attribute 'gfile'

Does anyone know any solution for this please ?

kawthar-eltarr avatar Dec 19 '21 16:12 kawthar-eltarr

Hello Friends, I had this issue with tf 2.8 and bert 1.0.4 as well. I just stick these lines before the offending call: import sys sys.argv=['preserve_unused_tokens=False'] #Or true, if you like flags.FLAGS(sys.argv)

Cheers!

paramdutta avatar Apr 25 '22 17:04 paramdutta

Hello Friends, I had this issue with tf 2.8 and bert 1.0.4 as well. I just stick these lines before the offending call: import sys sys.argv=['preserve_unused_tokens=False'] #Or true, if you like flags.FLAGS(sys.argv)

Cheers!

what is the 'flags' variable?

AnandVamsi1993 avatar May 04 '22 01:05 AnandVamsi1993

Trying to access flag --preserve_unused_tokens before flags were parsed. im still stuck at this

downgraden not really impact to me

ahmadharimukti avatar May 17 '22 15:05 ahmadharimukti

I set the flag manually. Not sure this is right but made my code work.

import sys
from absl import flags
sys.argv=['preserve_unused_tokens=False']
flags.FLAGS(sys.argv)

sa5r avatar May 25 '22 00:05 sa5r

I set the flag manually. Not sure this is right but made my code work.

import sys
from absl import flags
sys.argv=['preserve_unused_tokens=False']
flags.FLAGS(sys.argv)

This fixes the issue

honzikv avatar Jul 22 '22 08:07 honzikv

I set the flag manually. Not sure this is right but made my code work.

import sys
from absl import flags
sys.argv=['preserve_unused_tokens=False']
flags.FLAGS(sys.argv)

Hey thanks,it worked for me

Rask133 avatar Feb 13 '23 05:02 Rask133

Hello Friends, I had this issue with tf 2.8 and bert 1.0.4 as well. I just stick these lines before the offending call: import sys sys.argv=['preserve_unused_tokens=False'] #Or true, if you like flags.FLAGS(sys.argv)

Cheers!

thankyou,it fixes the issue

xlsdust avatar Apr 12 '23 03:04 xlsdust