序
- Bert源码准备分两块看,数据部分和模型部分,这一篇就看看数据部分。
- 其主要部分基于tfrecord这个api的操作,但这个是tensorflow的东西,不是bert的东西,这里就不详细讲。
- 总的来说,你需要把你的数据转换成tfrecord格式,为什么,你可以看一下官网介绍的优点,你就理解为:它好,你好,大家好…tfrecord是官方强烈推荐的存储数据的格式,因为它方便和其他高级API对接,比方说你建立模型时要用的estimator API…等等优点。
- 所以我们在最开始针对数据的思路是:读数据进内存->存数据为tfrecord文件。
- get_train_examples…那三个函数就是读数据进内存。
- 这个函数就是用来把读进来的数据转化成tfrecord文件格式的,具体怎么转换其实可以单独拿出来当作tensorflow的知识另外学,这里就只说关于bert的部分了。
- bert当然不是仅仅直接输入你的样本那么简单,它的输入需要做一些变换,所以这里把这个变换放到了存入tfrecord文件前面,先转换,再存入,一条一条样本这样进行。
- 它做的变化就是:输入你读到内存里面的数据,输出下面那几个特征:
features["input_ids"]
features["input_mask"]
features["segment_ids"]
features["label_ids"]
features["is_real_example"]
- 在了解上面转化之前,需要先进行一步分词操作。
- 详细的分析看这篇文章
- 大致作用如下:
文章图片
特征含义
- 这是根据bert模型是相关的,这里简单说一下各个特征的含义即可:
features["input_ids"] :每个中文字对应的词库id
features["input_mask"]: The mask has 1 for real tokens and 0 for padding tokens. Only real
tokens are attended to.
features["segment_ids"] : 句子标记的id(表明术语哪一个句子)
features["label_ids"]: 这条样本对应标签的id
features["is_real_example"] :bool类型,True
文章图片
- 有个细节:随机选取词进行遮蔽训练这是在pre-train的时候做的,现在我们是利用pre-train的模型,所以没有这些东西。
- 将数据转换成对应的feature后,按照标准的写入方法,写进tfrecord文件即可。
- 对应于train,eval,predict都进行同样操作。
推荐阅读
- 人工智能|hugginface-introduction 案例介绍
- Keras|将Pytorch模型迁移到android端(android studio)【未实现】
- 深度学习|论文阅读(《Deep Interest Evolution Network for Click-Through Rate Prediction》)
- Tensorflow|Tensorflow学习笔记----梯度下降
- Tensorflow【branch-官网代码实践-Eager/tf.data/Keras/Graph】_8.19
- nlp|Keras(十一)梯度带(GradientTape)的基本使用方法,与tf.keras结合使用
- tensorflow|tf1.x究竟到底如何如何使用Embedding?
- python|Keras TensorFlow 验证码识别(附数据集)
- NER|[论文阅读笔记01]Neural Architectures for Nested NER through Linearization
- 深度学习|2019年CS224N课程笔记-Lecture 17:Multitask Learning