# README

[BERT开源框架地址](<https://github.com/google-research/bert>)，最好读下README，以下是预训练好的BERT模型，这里用到两个

![image-20240517172005425](assets/image-20240517172005425.png)

> 点击即可下载，里面内容如下

![1609826152438](assets/1609826152438.png)

![1609826160982](assets/1609826160982.png)

> json：相关的参数
>
> vocab：语料库
>
> 其它：使用时的是加载文件，如训练好的权重等

![1609826290795](assets/1609826290795.png)

> 下载一个数据集，使用脚本命令下载，可能需要翻墙，可以访问我的云盘进行下载。链接：https://pan.baidu.com/s/18vPGelYCXGqp5OCWZWz36A 
> 提取码：de0f。这里只用到MRPC



#### MRPC

内容如下：

![1609827571649](assets/1609827571649.png)

train.csv：

![1609827493014](assets/1609827493014.png)

> 二分类任务：判断两句话是否说的是同一意思
>
> Quality：是否相同，相同为1

test.csv

![1609827666717](assets/1609827666717.png)

> 没有了Quality，需要进行预测



#### download BERT

把bert的code全部下载下来，并解压到指定目录

![1609827887131](assets/1609827887131.png)



#### 创建环境

settings一个虚拟环境，我使用的是pycharm

![1610378141133](assets/1610378141133.png)

我默认你是下载了某个IDE，至少是懂python的，Show All

![1610378199764](assets/1610378199764.png)

点击加号

![1610378235115](assets/1610378235115.png)

添加一个conda或者普通的python都可以，因为conda是专门做数据的，所以我选了conda，其实没什么区别

![1610378282775](assets/1610378282775.png)

点击OK即可。

![1610378368510](assets/1610378368510.png)

> 输入如下命令，进行安装

~~~
# python3.7，我的是window
pip install tensorflow==1.13.2 -i https://pypi.douban.com/simple

pip install numpy==1.16 -i https://pypi.douban.com/simple
~~~



#### 参数

![1609999902323](assets/1609999902323.png)

注意：是run_classifier.py文件

![1609999954700](assets/1609999954700.png)

~~~
-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
-init_checkpoint=../GLUE/BERT_BASE_DIR/uncased_L-12_H-768_A-12/bert_model.ckpt
-max_seq_length=128
-train_batch_size=8
-learning_rate=2e-5
--num_train_epochs=3.0
-output_dir=../GLUE/output/
~~~

> task_name：运行的模块，在main里指定了名字对应的类
>
> do_train：是否训练
>
> do_eval：是否验证
>
> data_dir：数据地址
>
> vocab_file：词库表
>
> bert_config_file：bert参数
>
> init_checkpoint：初始化参数
>
> max_seq_length：最长字符限制
>
> train_batch_size：训练次数
>
> learning_rate：学习率
>
> num_train_epochs：循环训练次数
>
> output_dir：输出路径

配置完成后，run该文件即可

![1610000183063](assets/1610000183063.png)



Google原版的

![1610000131364](assets/1610000131364.png)



#### 报错及解决办法

class AdamWeightDecayOptimizer(tf.optimizers.Optimizer): AttributeError: module 'tensorflow' has no attribute 'optimizers'

> 如下内容

~~~
tf.optimizers.Optimizer改为tf.keras.optimizers.Optimizer
~~~



super(AdamWeightDecayOptimizer, self).__init__(False, name) TypeError: __ini

~~~
super(AdamWeightDecayOptimizer, self).__init__(False, name)
    改成
super(AdamWeightDecayOptimizer, self).__init__()
~~~



tensorflow/core/framework/op_kernel.cc:1401] OP_REQUIRES failed at save_restore_v2_ops.cc:109 : Not found: Failed to create a NewWriteableFile:

> 路径过长，需要将整个项目移动到某盘下。要求满足：1.段路径，2.全英文



#### 备选方案

一直起不来的，可以直接使用我改好的代码文件，链接：https://pan.baidu.com/s/18vPGelYCXGqp5OCWZWz36A 
提取码：de0f

我的路径如下：

![1610161459549](assets/1610161459549.png)

![1610161435131](assets/1610161435131.png)

![1610161444607](assets/1610161444607.png)

![1610161474977](assets/1610161474977.png)

![1610161499158](assets/1610161499158.png)

output是自动生成的不需要管