news 2026/8/21 15:14:12

基于BERT模型的文本分类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于BERT模型的文本分类

一、源代码和数据集下载

二、代码部署运行(MRPC为例)

1、配置参数

--task_name=MRPC \ 任务名称,其他任务相应修改任务

--do_train=true \ 是否做训练

--do_eval=true \ 训练完是否做验证

--data_dir=../GLUE/glue_data/MRPC \ 数据集路径,不要有中文

--vocab_file=../GLUE/BERT_BASE_DIR/uncased_L-12_H-768_A-12/vocab.txt \ 语料表

--bert_config_file=../GLUE/BERT_BASE_DIR/uncased_L-12_H-768_A-12/bert_config.json \ bert中的超参数

--init_checkpoint=../GLUE/BERT_BASE_DIR/uncased_L-12_H-768_A-12/bert_model.ckpt \ 预训练好的

--max_seq_length=128 \

--train_batch_size=4 \ 小一点32、16、8、4

--learning_rate=2e-5 \

--num_train_epochs=3.0 \ 小一点,大了运行会很慢

--output_dir=../GLUE/output 保存的训练模型放在哪

2、运行

【运行报错】AttributeError: module 'tensorflow._api.v2.train' has no attribute 'Optimizer'

原因是下载的tensorflow是2.x版本,而2.x版本已经移除了Optimizer接口

在anaconda prompt中输入conda list可以看到TensorFlow版本是2.x

【解决办法】改代码改不好,这里只能找github上使用TensorFlow2.x版本的代码了,重头开始。

一、源代码和数据集下载

1、TF2版本的BERT模型代码下载

地址如下

bhuvanakundumani/BERT-NER-TF2

2、安装缺少的依赖包

这个代码要额外使用到以下依赖包

seqeval==0.0.5
fastprogress==0.1.21

在run_ner.py文件中进行参数配置:

--data_dir=data/ --bert_model=bert-base-uncased --output_dir=model_sep20 --max_seq_length=128 --do_train --num_train_epochs 3 --do_eval --eval_on dev

二、换了一个封装好的bert-for-TF2

kpe/bert-for-tf2:BERT、ALBERT 和 adapter-BERT 的 Keras TensorFlow 2.0 实现。

1、在pytorch环境中无法安装bert依赖,可能是pytorch与bert存在环境冲突,新建一个干净的虚拟环境

conda create -n bert_tf2 python=3.8

activate bert_tf2

2、pip install bert-for-tf2自动安装一直报错:

无法解决,于是尝试本地安装,原码下载后,进入bert-for-tf2-master目录,执行

python setup.py install(这里好像需要把bert-for-tf2-master目录读写权限改一下,授予权限)

此处报错如下,是因为setuptools版本与bert-for-tf2的安装脚本不兼容,安装兼容版本的setuptools,输入pip install setuptools==58.2.0(期间还会遇到一些其他的版本不兼容问题,报错问一下ai再安装对应的版本就可以了,ai是我最好的老师。。命苦)

3、创建新项目并配置解释器

安装TensorFlow(pycharm中自动安装的是2.x版本)

4、加载模型

import tensorflow as tf import bert from bert import BertModelLayer from bert.tokenization.bert_tokenization import FullTokenizer # 1. 加载预训练模型参数 #指定模型目录 --uncased :不区分大小写 --L-12: 12 层 Transformer 层 --H-768: 隐藏层维度为 768 --A-12: 12 个注意力头 model_dir = "./uncased_L-12_H-768_A-12" #从检查点加载参数:params_from_pretrained_ckpt() 函数从预训练模型的检查点文件加载参数配置,它会读取 bert_config.json 文件并转换为 Python 对象,返回的 bert_params 是一个包含所有 BERT 模型参数的命名元组 bert_params = bert.params_from_pretrained_ckpt(model_dir) # 2. 创建 BERT 模型层 #BertModelLayer.from_params() 根据参数配置创建一个 BERT 模型层,name="bert" 为该层指定名称(在 TensorFlow 模型中显示为层名),创建的 l_bert 是一个 Keras 层,可以像其他 Keras 层一样集成到模型中 l_bert = bert.BertModelLayer.from_params(bert_params, name="bert") # 3. 构建模型 max_seq_len = 128 # 最大序列长度 input_ids = tf.keras.layers.Input(shape=(max_seq_len,), dtype='int32') output = l_bert(input_ids) model = tf.keras.Model(inputs=input_ids, outputs=output) # 4. 加载预训练权重 bert.load_stock_weights(l_bert, model_dir)

此处运行会报错,因为我的tensorflow版本是2.13,与 bert-for-tf2存在不兼容问题,修改如下

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 15:08:27

FFmpeg 6 + QOpenGLWidget + PBO:从“能跑”到“能打”的视频渲染架构演进

目录 一、引子:为什么你的视频播放器总是卡顿? 二、核心概念:为什么 PBO 是视频渲染的“分水岭”? 1. 传统方式:CPU 到 GPU 的“搬运工” 2. PBO 方式:GPU 之间的“快递员” 三、架构设计:双 PBO 乒乓缓冲 工作原理 四、关键难点:正确处理 YUV420P 的 linesize …

作者头像 李华
网站建设 2026/8/21 15:05:18

从零开始的人工智能之路(2)【Anaconda+YOLOv8】

大家好,今天给大家带来的是Anaconda的安装并且利用Anaconda安装和配置YOLOv8。【Windows下】 下载Anaconda 1、官方渠道下载 这里是Anaconda的官网 这里是Anaconda的下载页 或者点击此处直接开始下载(版本:Anaconda3-2024.10-1-Windows-…

作者头像 李华
网站建设 2026/8/21 15:03:58

30分钟跑通第一个量化回测:PyBroker 算法交易框架新手实战

30分钟跑通第一个量化回测:PyBroker 算法交易框架新手实战 【免费下载链接】pybroker Algorithmic Trading in Python with Machine Learning 项目地址: https://gitcode.com/gh_mirrors/py/pybroker PyBroker 是一个用 Python 写成的算法交易框架&#xff0…

作者头像 李华
网站建设 2026/8/21 15:03:07

性能优化指南:如何让 deno-postgres 在高并发下保持闪电速度

性能优化指南:如何让 deno-postgres 在高并发下保持闪电速度 【免费下载链接】postgres PostgreSQL driver for Deno 项目地址: https://gitcode.com/gh_mirrors/postgr/postgres deno-postgres 是专为 Deno 运行时打造的轻量级 PostgreSQL 驱动,…

作者头像 李华
网站建设 2026/8/21 15:00:54

041、Octo开源机器人基础模型:模块化Transformer的扩散策略实现

041、Octo开源机器人基础模型:模块化Transformer的扩散策略实现 调试Octo的时候,我盯着终端里那行loss: nan看了整整一个下午。不是权重爆炸,不是学习率过高,是数据加载器里一个不起眼的dtype转换把图像像素值从uint8变成了float3…

作者头像 李华
网站建设 2026/8/21 14:58:53

零代码搭建企业知识图谱:一份Excel、三天上线、随时可问

零代码搭建企业知识图谱:一份Excel、三天上线、随时可问 【免费下载链接】SmartKG This project accepts excel files as input which contains the description of a Knowledge Graph (Vertexes and Edges) and convert it into an in-memory Graph Store. This pr…

作者头像 李华