【PYTORCH】官方的turoria实现中英文翻译
参考
https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html
背景
pytorch官方的是seq2seq是法语到英文,做了一个中文到英文的。
数据集
下载后解压,使用的data\testsets\devset\UNv1.0.devset.zh和UNv1.0.devset.en,因为电脑配置不行,所以只选取了100行来训练。
https://www.un.org/dgacm/sites/www.un.org.dgacm/files/files/UNCORPUS/UNv1.0.testsets.tar.gz
具体代码
行数太多,放在了gitee上。
https://gitee.com/likexiang/source-code-records/blob/master/pythonTranslationZHToEn.py
问题
预测出来的结论,解析出来是0,不知道是怎么回事?
> 澳大利亚(2017年)、加拿大(2016年)、丹麦(2017年)、德国(2016年)、意大利* (2015年)、美利坚合众国* (2015年)
= Australia (2017), Canada (2016), Denmark (2017), Germany (2016), Italy* (2015), United States of America* (2015)
input_tensor is tensor([[259, 260, 261, 208, 262, 19, 263, 260, 264, 208, 262, 19, 265, 260,
261, 208, 262, 19, 266, 260, 264, 208, 262, 19, 267, 268, 49, 260,
269, 208, 262, 19, 270, 268, 49, 260, 269, 208, 262, 1]])
decoded_ids is tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0])
< SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS
正常的情况下,比如fr翻译为en,loss=0.0146、batch_size = 64、hidden_size = 128、80轮如下
> Je le suppose.
= I guess so.
input_tensor is tensor([[ 18, 138, 953, 1]])
decoded_ids is tensor([ 10, 766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
< I assume SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS
> Relâchez-le !
= Release him.
input_tensor is tensor([[1866, 3, 1]])
decoded_ids is tensor([966, 119, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
< Release him. <EOS>
> Je mange.
= I'm eating.
input_tensor is tensor([[ 18, 1027, 1]])
decoded_ids is tensor([ 31, 533, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
< I'm greedy. <EOS>
> Allez à l'école !
= Go to school.
input_tensor is tensor([[ 119, 92, 2198, 3, 1]])
decoded_ids is tensor([ 60, 247, 1101, 420, 1074, 60, 378, 105, 106, 68, 490, 106,
622, 505, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0])
< Go to school. you sign? Go mine. You run. runs. know run. smiled. remember. <EOS>
> Abandonne !
= Give it up.
input_tensor is tensor([[886, 1]])
decoded_ids is tensor([ 10, 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
< I like SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS
> Garde ton sang-froid.
= Stay calm.
input_tensor is tensor([[727, 728, 729, 1]])
decoded_ids is tensor([437, 712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
< Do your SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS SOS
> Êtes-vous sûres ?
= Are you sure?
input_tensor is tensor([[ 827, 2108, 1]])
decoded_ids is tensor([ 418, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 842, 144, 419, 420,
681, 681, 419, 420, 681, 681, 419, 420, 681, 681, 419, 420,
681])
< wrong? admire admire admire admire admire admire admire attend. get Are you home? home? Are you home? home? Are you home? home? Are you home?
> Je le déciderai.
= I'll decide.
input_tensor is tensor([[ 18, 138, 1652, 1]])
decoded_ids is tensor([ 10, 276, 276, 74, 296, 74, 296, 74, 296, 74, 296, 74, 296, 74,
296, 74, 296, 74, 296, 74, 296, 74, 296, 74, 296])
< I like like I'll cook. I'll cook. I'll cook. I'll cook. I'll cook. I'll cook. I'll cook. I'll cook. I'll cook. I'll cook. I'll cook.
> Nous avons été défaits.
= We lost.
input_tensor is tensor([[ 84, 85, 224, 222, 1]])
decoded_ids is tensor([39, 30, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0])
< We lost. <EOS>
> Nous commencerons.
= We'll start.
input_tensor is tensor([[ 84, 1979, 1]])
decoded_ids is tensor([39, 30, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0])
< We lost. <EOS>