Ch6. Example 6-1 Surname Classification with RNN

本博客通过实例探讨如何利用RNN解决人名所属国家的分类问题。详细介绍了网络结构、数据维度以及Column gather函数的用途,该函数用于提取序列输出的最后一个词向量,以捕获单词的contextual信息。同时,提到了detach()函数的作用以及在训练过程中遇到的loss不下降的问题,可能与Vectorize方法的使用有关。
摘要由CSDN通过智能技术生成

本例开始使用NLP中的经典结构-RNN。首先构建了ElmanRnn(其实pytorch自带这个网络,作者为了读者能更清楚的了解RNN的结构,所以额外构造了它),在此基础上搭建分类器。

待解决的问题:根据人名识别所属国家

目录

网络结构和数据维度

Column gather 函数

代码笔记


网络结构和数据维度

 

Column gather 函数

1. 这个函数很有意思,配合RNN网络使用,目的是为了取出序列输出的最后一个词向量,要注意的是单词长度不同,长度较短的单词向量都在尾部用mask填充,所以利用参数x_length保证不会取到mask。

2. 为什么只取最后一个词向量呢?因为经过RNN的序列处理,单词的所有contextual信息都被记忆在了最后一个词向量,比如john这个名字,j,o,h的信息都被或多或少地保存在n的向量中,所以只取出n的向量再传入FC层进行分类就足够了。

3. 注意第12行,使用了detach(),到目前为止,只知道会将该节点从图中分离,形成叶节点,从而造成梯度不回传。(但似乎不适用这个方法也没什么影响)有待进一步调研

def column_gather(y_out, x_length):
    """Get a specific vector fr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值