UnparsedFlagAccessError:在解析标志之前尝试访问标志 --preserve_unused_tokens。伯特

2024-01-13

我想使用 Bert 语言模型来训练多类文本分类任务。 之前我使用 LSTM 进行训练,没有任何错误,但 Bert 给了我这个错误。 我收到以下错误,我真的不知道如何解决它,有人可以帮助我吗?

不幸的是,keras 库中使用 BERT 的文档很少。

!wget --quiet https://raw.githubusercontent.com/tensorflow/models/master/official/nlp/bert/tokenization.py

import tensorflow_hub as hub
from bert import tokenization
module_url = 'https://tfhub.dev/tensorflow/bert_en_uncased_L-12_H-768_A-12/2'
bert_layer = hub.KerasLayer(module_url, trainable=True)





vocab_file = bert_layer.resolved_object.vocab_file.asset_path.numpy()
do_lower_case = bert_layer.resolved_object.do_lower_case.numpy()
tokenizer = tokenization.FullTokenizer(vocab_file, do_lower_case)

def bert_encode(texts, tokenizer, max_len=512):
    all_tokens = []
    all_masks = []
    all_segments = []
    
    for text in texts:
        text = tokenizer.tokenize(text)
            
        text = text[:max_len-2]
        input_sequence = ["[CLS]"] + text + ["[SEP]"]
        pad_len = max_len - len(input_sequence)
        
        tokens = tokenizer.convert_tokens_to_ids(input_sequence) + [0] * pad_len
        pad_masks = [1] * len(input_sequence) + [0] * pad_len
        segment_ids = [0] * max_len
        
        all_tokens.append(tokens)
        all_masks.append(pad_masks)
        all_segments.append(segment_ids)
    
    return np.array(all_tokens), np.array(all_masks), np.array(all_segments)



def build_model(bert_layer, max_len=512):
    input_word_ids = tf.keras.Input(shape=(max_len,), dtype=tf.int32, name="input_word_ids")
    input_mask = tf.keras.Input(shape=(max_len,), dtype=tf.int32, name="input_mask")
    segment_ids = tf.keras.Input(shape=(max_len,), dtype=tf.int32, name="segment_ids")

    pooled_output, sequence_output = bert_layer([input_word_ids, input_mask, segment_ids])
    clf_output = sequence_output[:, 0, :]
    net = tf.keras.layers.Dense(64, activation='softmax')(clf_output)
    net = tf.keras.layers.Dropout(0.2)(net)
    net = tf.keras.layers.Dense(32, activation='softmax')(net)
    net = tf.keras.layers.Dropout(0.2)(net)
    out = tf.keras.layers.Dense(3, activation='softmax')(net)
    
    model = tf.keras.models.Model(inputs=[input_word_ids, input_mask, segment_ids], outputs=out)
    model.compile(tf.keras.optimizers.Adam(lr=1e-5), loss='categorical_crossentropy', metrics=['accuracy'])
    
    return model



max_len = 150
train_input = bert_encode(data.text_cleaned, tokenizer, max_len=max_len)

错误如下:


UnparsedFlagAccessError                   Traceback (most recent call last)
<ipython-input-175-fd64df42591d> in <module>()
      1 import sys
      2 max_len = 150
----> 3 train_input = bert_encode(o.text_cleaned, tokenizer, max_len=max_len)

4 frames
/usr/local/lib/python3.7/dist-packages/absl/flags/_flagvalues.py in __getattr__(self, name)
    496         # get too much noise.
    497         logging.error(error_message)
--> 498       raise _exceptions.UnparsedFlagAccessError(error_message)
    499 
    500   def __setattr__(self, name, value):

UnparsedFlagAccessError: Trying to access flag --preserve_unused_tokens before flags were parsed.


基于此issue https://github.com/google-research/bert/issues/1133你必须将 bert-tensorflow 降级到 1.0.1。查看这个答案 https://github.com/google-research/bert/issues/1133#issuecomment-703818257找到解决方案。如果您正在关注本教程 https://www.analyticsvidhya.com/blog/2020/10/simple-text-multi-classification-task-using-keras-bert/降级 bert-tensorflow 并使用!wget --quiet https://raw.githubusercontent.com/tensorflow/models/master/official/nlp/bert/tokenization.py正如建议的那样,因为在 python 代码中作者已经进行了更改tf.gfile.GFile(vocab_file, "r") to tf.io.gfile.Gfile(vocab_file, "r")。之后代码编译成功。如果你还想要什么,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UnparsedFlagAccessError:在解析标志之前尝试访问标志 --preserve_unused_tokens。伯特 的相关文章

随机推荐

  • 根据列值连接不同的表

    我有一个表R 其中包含表P的外键 在表P中有一列 告诉我表P中的记录是什么类型 与 P type 列中的可能值相关 根据表存在 因此 如果 P type 中的值为 C 则表示名为 C 的表 如果值为 D 则表示名为 D 的表 现在我想要一个
  • 文件的 listFiles() 不适用于符号链接?

    我有以下文件对象通过符号链接指向目录 File directory new File path symlink foo bar String files directory listFiles listFiles 返回 null 这是因为符
  • 如何循环加载所有用户的注册表配置单元

    使用管理员权限 我需要枚举 Windows 7 系统上的所有用户 甚至是已注销的用户 然后我需要为每个用户加载注册表配置单元并设置一个密钥 NetUserEnum 给我 SID 我猜 LsaEnumerateLogonSessions 也会
  • 在 Windows 上我应该将 Eclipse 安装到哪个文件夹?

    我运行的是 Windows 7启用UAC 我一直觉得很奇怪Eclipse http www eclipse org 不使用安装程序 也不使用 AppData 文件夹在 Windows 中存储其数据 但最近我不得不重新安装几次 硬盘驱动器问题
  • Python tkinter 文本修改回调

    在 python 2 7 中 每次 Tkinter Text 小部件中发生更改时 我都尝试获取回调 该程序使用基于此处找到的代码的多个框架 在 tkinter 中的两个框架之间切换 https stackoverflow com quest
  • wpf:获取组合框值

    我有一个名为 cbFileSize 的 WPF 组合框 我尝试获取所选值 如下所示 string tmp cbFileSize SelectedValue ToString MessageBox Show tmp 但 tmp 设置为 Sys
  • 无法加载数据源的类:com.databricks.spark.csv

    My build sbt文件有这个 scalaVersion 2 10 3 libraryDependencies com databricks spark csv 2 10 1 1 0 我正在独立集群模式下运行 Spark 我的 Spar
  • 有条件地应用 Angular 4 中的点击事件

    是否可以在模板中定义一个附加点击处理程序的条件 例如 我能得到的最接近的是评估单击方法入口处的条件 a class user a 如果标志有的话 有没有一种方法可以避免完全绑定到单击事件isOverflown是假的吗 另外 我不想使用ng
  • 使用 Maven 打包并运行 Scala Spark 项目

    我正在 Scala 中编写一个应用程序 它使用Spark http spark apache org 我正在使用 Maven 打包应用程序 并在构建应用程序时遇到问题 uber 或 fat 罐子 https stackoverflow co
  • 在后台处理ViewExpiredException并恢复表单值

    是否有一个无数据库 primefaces 和 keep session alive 的解决方案来防止或在恢复表单输入时在后台静默处理 ViewExpiredException 例如 具有 保持登录 cookie 的用户不希望被重定向到某种错
  • 在 R 中执行时间序列的 fft

    我想使用 FFT 将波拟合到时间序列 目标是绘制具有不同谐波的图 并用它来预测 n 个数据点 我正在使用的代码基于此answer https stackoverflow com questions 41435777 perform four
  • 非本机长度的有符号和无符号整数的性能差异

    有这样一段话 CppCon 2016 钱德勒 卡鲁斯 Chandler Carruth 垃圾进 垃圾出 争论未定义的行为 https youtu be yG1OZ69H o t 39m16s 其中 Carruth 先生展示了 bzip 代码
  • Angular UI 路由器无法使用 Internet Explorer 9 进行解析

    我有一个 Angular v1 3 应用程序 它使用 Angular ui router v0 2 13 进行所有路由 该网站在所有浏览器上都能正常运行 包括 IE 10 和 IE 11 但不能在 IE 9 上运行 我们决定不再使用 IE8
  • 带箭头顶部和边框的框

    我只是要在上面创建一个盒子 边缘有一个箭头 我经常尝试但不幸的是相关的解决方案 我自然而然地在网上和网站上查询 但遗憾的是没有成功 所以它应该照顾 箭头应具有与框相同的边框和相同的背景颜色 所以现在看起来 arrow up width 10
  • Xcode 4 对当前版本的 MonoTouch 有影响吗?

    安装 Xcode 4 安全吗 今天发布的 MonoTouch 将允许您安装 XCode 4 并继续使用 MonoTouch 构建应用程序 但如果您使用安装 XCode 4 您将无法编辑 XIB 文件 我们建议开发人员安装新的 XCode 3
  • 具有类继承的数据类字典

    我有以下课程 dataclass json dataclass class Input sources List Sources None Transformations List str None 也 dataclass json dat
  • 如何使用mutationobserver代替突变事件?

    我正在尝试使用 D3 js 创建我的第一个流图 我从一个工作示例开始 其中包含在线发布的代码中的工具提示 http bl ocks org WillTurman 4631136 http bl ocks org WillTurman 463
  • 设置电子邮件和浏览器的 tr 和 td 宽度和高度

    我正在制作 HTML 电子邮件 我想在发送之前在浏览器中预览它们 因此我希望它们在浏览器和电子邮件客户端中看起来相似 我尝试了多种方法来设置行和单元格的宽度和高度 table height 500 width 200 tr td heigh
  • Fabric.js:如何填充徒手路径来绘制形状?

    在fabric js中 我们可以徒手绘制路径 例如http fabricjs com freedrawing http fabricjs com freedrawing 但是 在 HTML canvas 2d context ctx 中 我
  • UnparsedFlagAccessError:在解析标志之前尝试访问标志 --preserve_unused_tokens。伯特

    我想使用 Bert 语言模型来训练多类文本分类任务 之前我使用 LSTM 进行训练 没有任何错误 但 Bert 给了我这个错误 我收到以下错误 我真的不知道如何解决它 有人可以帮助我吗 不幸的是 keras 库中使用 BERT 的文档很少