数据集的准备

用的数据集都是我从网上下载的,而且数据集的预处理我之前已经写过一篇文章了,大家可以看那个文章从那里可以下载到数据集和预处理的代码。中英翻译对数据集的预处理。

Transorflow模型代码

这个模型是从GitHub获取的官网代码,不需要怎么改动。接下来我就简单的讲下每部分代码都起到了什么作用,至于为什么要用到这些代码和这些代码主要是干什么的?大家可以看看我转载的这篇文章,模型中的代码在这篇文章中都有讲到。

一. 位置编码

我们知道Transorflow优势就是不受时间和空间上的限制。它是在同一时间对每个向量进行不同的加权处理。所以它对向量的位置是没有要求的。但实际上:我从北京到上海 我从上海到北京 这两句话如果没有位置要求的话是一样的但显然这两句话的意义有很大的差距。所以我们要在文本向量加上其位置编码.

transformer tensorflow torch区别 transformer tensorflow 2.0_预处理

transformer tensorflow torch区别 transformer tensorflow 2.0_自然语言处理_02


二. 构建掩码

transformer tensorflow torch区别 transformer tensorflow 2.0_自然语言处理_03


三.self-attention 和 Mutil-Head Attention

transformer tensorflow torch区别 transformer tensorflow 2.0_tensorflow_04


transformer tensorflow torch区别 transformer tensorflow 2.0_数据集_05


四.编码器

编码器和解码器都是有多个编码层和解码层堆叠而来的,代码太多就不一一展示了。

transformer tensorflow torch区别 transformer tensorflow 2.0_tensorflow_06


五.解码器

transformer tensorflow torch区别 transformer tensorflow 2.0_深度学习_07


六.Transformer

编码器+解码器+一个全连接层就是Transformer 模型了。

transformer tensorflow torch区别 transformer tensorflow 2.0_自然语言处理_08


七. 优化器,损失函数

这两个是我们在深度学习反向传播所必须用到的。

transformer tensorflow torch区别 transformer tensorflow 2.0_自然语言处理_09


八.整合

把上面写到的这些函数整合到一起。

transformer tensorflow torch区别 transformer tensorflow 2.0_自然语言处理_10

九.训练

把我们的数据集导入进来开始训练。

transformer tensorflow torch区别 transformer tensorflow 2.0_tensorflow_11

十.结果

这是我刚开始训练的结果 完全可以运行起来。只不过刚开始准确率有点差,而且电脑性能也不是很好,运行的时间会特别久。就不展示运行完的结果了。

transformer tensorflow torch区别 transformer tensorflow 2.0_tensorflow_12