目录
如何运行tensorflow
Transformer
decode和encode
decode | encode |
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gbk编码的字符串str1转换成unicode编码。 | encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘gb2312’),表示将unicode编码的字符串str2转换成gbk编码。 |
attention机制
attention是一种能让模型对重要信息重点关注并充分学习吸收的技术,它不算是一个完整的模型,应当是一种技术,能够作用于任何序列模型中。
Transformer总体结构
Transformer模型中也采用了 encoer-decoder 架构
每一个encoder和decoder的内部简版结构
对于encoder,包含两层,一个self-attention层和一个前馈神经网络,self-attention能帮助当前节点不仅仅只关注当前的词,从而能获取到上下文的语义。decoder也包含encoder提到的两层网络,但是在这两层中间还有一层attention层,帮助当前节点获取到当前需要关注的重点内容。
模型的内部细节。
首先,模型需要对输入的数据进行一个embedding操作,(也可以理解为类似w2c的操作),enmbedding结束之后,输入到encoder层,self-attention处理完数据后把数据送给前馈神经网络,前馈神经网络的计算可以并行,得到的输出会输入到下一个encoder。
bert代码
读取数据集(预处理)
如果是自定义的数据集还需要手动的修改代码
get_train_example(把数据一行一行读进来)
num_train_step 迭代次数
num_warmup_steps 还原学习率
数据预处理模块
把数据写成tfrecord文件
核心函数
构建标签
切分词 wordpiece
添加分隔符 CLS SEP SEP
通过索引来找词
方便写进tfrecord的操作(这一部分是在file_based_convert_examples_to_features函数里)
写进tfrecord里
基于BERT的中文情感分析
修改传入参数(路径 相对路径)
修改数据读取的代码
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'