使用RNN对文本进行分类实践:电影评论 (tensorflow2.0官方教程翻译)

本教程在IMDB大型影评数据集 上训练一个循环神经网络进行情感分类。

导入matplotlib并创建一个辅助函数来绘制图形

1. 设置输入管道

IMDB大型电影影评数据集是一个二元分类数据集,所有评论都有正面或负面的情绪标签。

使用TFDS下载数据集,数据集附带一个内置的子字标记器

由于这是一个子字标记器,它可以传递任何字符串,并且标记器将对其进行标记。

如果字符串不在字典中,则标记生成器通过将字符串分解为子字符串来对字符串进行编码。

2. 创建模型

构建一个tf.keras.Sequential模型并从嵌入层开始,嵌入层每个字存储一个向量,当被调用时,它将单词索引的序列转换为向量序列,这些向量是可训练的,在训练之后(在足够的数据上),具有相似含义的词通常具有相似的向量。

这种索引查找比通过tf.keras.layers.Dense层传递独热编码向量的等效操作更有效。

递归神经网络(RNN)通过迭代元素来处理序列输入,RNN将输出从一个时间步传递到其输入端,然后传递到下一个时间步。

tf.keras.layers.Bidirectional包装器也可以与RNN层一起使用。这通过RNN层向前和向后传播输入,然后连接输出。这有助于RNN学习远程依赖性。

3. 训练模型

上面的模型没有屏蔽应用于序列的填充。如果我们对填充序列进行训练,并对未填充序列进行测试,就会导致偏斜。理想情况下,模型应该学会忽略填充,但是正如您在下面看到的,它对输出的影响确实很小。

如果预测 >=0.5,则为正,否则为负。

png

png

4. 堆叠两个或更多LSTM层

Keras递归层有两种可以用的模式,由return_sequences构造函数参数控制:

png

png

查看其它现有的递归层,例如GRU层

最新版本:https://www.mashangxue123.com/tensorflow/tf2-tutorials-text-text_classification_rnn.html 英文版本:https://tensorflow.google.cn/beta/tutorials/text/text_classification_rnn 翻译建议PR:https://github.com/mashangxue/tensorflow2-zh/edit/master/r2/tutorials/text/text_classification_rnn.md