数据集链接:https://pan.baidu.com/s/1bIKasCIDAaT-_EwB6hcAMQ
提取码:4fij
任务:使用RNN通过训练name数据集来预测name属于哪个country.
RNN,LSTM,GRU都是循环神经网络。
网络模型:
最后只需要一个Linear Layer来得出整个name序列的预测结果。
数据准备
Name序列处理步骤:
1.Name转成序列List,即Maclean→['M', 'a', 'c', 'l', 'e', 'a', 'n']
2.用ASCⅡ码表示List中的元素,即[77 97 99 108 101 97 110],里面不是代表数值,而是one-hot向量,比如77是指共128维的向量,只有Idex77是1,其他都是0
3.Padding将一个batch_size的序列填充成长度相同,即[77 97 99 108 101 97 110 0 0 0]
4.将Padding后的矩阵转置
5.按照序列长度降序排列
同时要获得对应顺序的序列长度列表[10, 8, 7, 7, 7, 7,6, 6, 5]
Country的处理步骤:
给每个Country一个索引,构成字典{‘country’: idx},在name排序之后,也要按照相同的排序将name对应的Country标签排序。
就是说,在拿到一个name后,就能根据name在batch_size中的位置找到country,再进一步找到分类标签idx。
双向RNN