Pytorch官方教程代码翻译_ClassifyingNames_Charter-Level_RNN
我们将建立并训练一个基于caharacter-level RNN(个人理解:字符级的RNN模型)来分类单词,该模型将单词当做一串字母读入,在每一轮训练中输出预测结果和隐藏状态,将其以前的隐藏状态提供给下一步。我们将单词属于哪种语言作为最后的预测结果当做输出。
训练数据集采用来自18种语言的姓氏大概有1000多条。预测结果基于名字的拼写方式得出。
|
|
创建网络
在自动求导梯度之前,在这之前在Torch中创建一个RNN网络涉及到每层参数的拷贝需要消耗部分时间。以前神经层包含的隐藏层和梯度现在全部被计算图自动处理。这意味着你可以以更纯粹的方式搭建RNN网。。。
这个RNN模型仅仅采用两个线性层分别处理输入数据和隐藏层,通过LogSoftmax层产生输出。
|
|
为了使这个模型可以运行,我们需要传递一个输入(在这个例子中,是当前单词的张量)和之前的隐藏状态(最开始初始化为0)。我们将得到输出(每种语言的可能性)和下个隐藏状态的值(在下一轮训练中使用)。
注意:pytorch模型基于Variables而不是直接使用Tensor进行操作
|
|
为了更有效的进行计算,我们不想在进行每一步训练时都创建一个新的Tensor,因此我们将使用 lineToTnsor
代替letterToTensor
并且使用切片。这将会极大的优化Tensor的预计算消耗。
训练
训练准备
在训练之前我们需要准备几个辅助函数。第一个是用来将网络的输出翻译为