目录
| decode | encode |
| decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gbk编码的字符串str1转换成unicode编码。 | encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘gb2312’),表示将unicode编码的字符串str2转换成gbk编码。 |
attention是一种能让模型对重要信息重点关注并充分学习吸收的技术,它不算是一个完整的模型,应当是一种技术,能够作用于任何序列模型中。
Transformer模型中也采用了 encoer-decoder 架构

每一个encoder和decoder的内部简版结构

对于encoder,包含两层,一个self-attention层和一个前馈神经网络,self-attention能帮助当前节点不仅仅只关注当前的词,从而能获取到上下文的语义。decoder也包含encoder提到的两层网络,但是在这两层中间还有一层attention层,帮助当前节点获取到当前需要关注的重点内容。
模型的内部细节。
首先,模型需要对输入的数据进行一个embedding操作,(也可以理解为类似w2c的操作),enmbedding结束之后,输入到encoder层,self-attention处理完数据后把数据送给前馈神经网络,前馈神经网络的计算可以并行,得到的输出会输入到下一个encoder。


如果是自定义的数据集还需要手动的修改代码

get_train_example(把数据一行一行读进来)
num_train_step 迭代次数
num_warmup_steps 还原学习率

把数据写成tfrecord文件
核心函数

构建标签

切分词 wordpiece
添加分隔符 CLS SEP SEP

通过索引来找词

方便写进tfrecord的操作(这一部分是在file_based_convert_examples_to_features函数里)
写进tfrecord里
- class MyDataProcessor(DataProcessor ):
- """Base class for data converters for sequence classification data sets."""
-
- def get_train_examples(self, data_dir):
- """Gets a collection of `InputExample`s for the train set."""
- file_path=os.path.join(data_dir,'train_sentiment.txt')
- f=open(file_path,'r',encoding='utf-8')
- train_data=[]
- index=0
- for line in f.readlines():
- guid="train-%d"%(index)
- line=line.replace('\n','').split('\t')
- text_a=tokenization.convert_to_unicode(str(line[1]))
- lable=str(line[2])
- train_data.append(
- InputExample(guid=guid,text_a=text_a,text_b=None,lable=lable)
- )
- return train_data
返回标签是 '0' '1' '2'