
PyTorch是当前主流深度学习框架之一,其设计追求最少的封装、最直观的设计,其简洁优美的特性使得PyTorch代码更易理解,对新手非常友好。
本文为实战篇,介绍基于RNN的文本分类,扫描文中的二维码可观看视频讲解(限免3天)。
本文将构建和训练基本的字符级RNN(递归神经网络)来对单词进行分类。展示如何“从头开始”进行NLP(自然语言处理)建模的预处理数据,尤其是不使用众多NLP工具库提供的许多便利功能,因此读者可以从系统层面角度了解NLP建模的预处理工作。
字符级RNN将单词作为一系列字符读取,之后在每个步骤输出一个预测结果和“Hidden State”,将其先前的Hidden State输入每个下一步。这里将最终的预测作为输出,即单词属于哪个类别。
具体来说,这里将训练来自18种起源于不同语言的数千种姓氏,并根据拼写方式预测名称的来源,样例如下。

数据准备
数据下载超链接:https://download.pytorch.org/tutorial/data.zip。
解压缩上述数据得到18个txt文件,将它们放置在data/names目录下。下面提供一段代码做预处理。


上述代码输出如下。

将名字转换为张量
现在已经整理好了所有数据集中的名字,这里需要将它们转换为张量以使用它们。为了表示单个字母,这里使用大小为<1×n_letters>的“one-hot”向量。一个one-hot向量用0填充,但当前字母的索引处的数字为1,例如 “ b”=<0 1 0 0 0 …>。为了用这些向量组成一个单词,这里将其中的一些连接成2维矩阵<line_length × 1 × n_letters>。
可以观察到数据的维度是<line_length×1×n_letters>,而不是<line_length×n_letters>,是因为额外的1维是因为PyTorch假设所有内容都是批量的——在这里只使用1的batchsize。
代码如下。

输出如下。

构建神经网络
在PyTorch中构建递归神经网络(RNN)涉及在多个时间步长上克隆多个RNN层的参数。RNN层保留了Hidden State和梯度,这些状态完全由PyTorch的计算图来自动完成维护。这意味着读者可以以非常“纯粹”的方式实现RNN,即只关心前馈网络(Feed-forward Network)而不需要关注反向传播(Back Propagation)。
下面样例中的RNN模块只有两个线性层,它接受一个输入和一个Hidden State,之后网络输出结果需要经过一个LogSoftmax层。RNN模型如图11.1所示。

■ 图11.1RNN模型
RNN代码定义如下。






实操可扫码观看(限免3天)
实例讲解
PyTorch深度学习实战

下期预告
深度学习简介
深度学习框架
PyTorch环境搭建
实战篇
参考书籍

《PyTorch深度学习实战-微课视频版》
数学基础和深度学习知识点与8个完整的实战案例相结合,配有详细的视频讲解,手把手带你通关深度学习。
ISBN:9787302568209
作者:吕云翔 刘卓然 主编 关捷雄 欧阳植昊 杨卓谦 华昱云 陈妙然 黎昆昌 吕可馨 王渌汀 副主编
价格:59.90元

扫码微店优惠购书
内容简介
本书在内容安排上十分精良,为便于数学基础较薄弱的读者学习,引入了深度学习数学基础;再由浅入深地以实战案例讲解的方式,对于误差反向传播法、卷积运算等进行详细剖析,使读者在实现层面上理解;此外还加入了前沿技术,如Batch Normalization等内容。本书提供了8个完整的项目案例、完整的构建过程、详细的视频讲解以及相应源代码,使读者能在实战案例中,深入完成深度学习的学习与掌握。
精彩推荐
微信小程序游戏开发│猜数字小游戏(附源码+视频) Flink编程基础│Scala编程初级实践 Flink编程基础│FlinkCEP编程实践 Flink编程基础│DataStream API编程实践 Flink编程基础│DataSet API编程实践 数据分析实战│客户价值分析 数据分析实战│价格预测挑战 数据分析实战│时间序列预测 数据分析实战│KaggleTitanic生存预测






