tensorflow——rnn(penn tree bank)

rnn(penn tree bank)

rnn的一个典型应用是用于处理自然语言,ptb是一个常用的数据集,里面包含上百万的词汇。本例就是采用lstm对ptb进行自然语言预测。

数据预处理过程及网络流程图

一些参数

batch_size = 20
num_steps = 20  # lstm在时间轴上的截断长度
hidden_size = 200  # lstm隐藏参数的大小
num_layers = 3  # lstm网络的深度

(1)数据预处理过程
原始数据是编码后的文本,用一维向量表示;将该原始数据reshape成batch size宽度的数据,以提高数据处理效率;在长度方向每隔num steps长度截断一次,构成网络输入x;将x右移一个位置构成标签y’。(这里的y’的每个元素都刚好为x的同位置元素的下一个词汇,因为rnn模型主要用于词汇的预测)

(2)网络流程
input: x(20,20), target: y’(20, 20) → (400)
1) after embedding: input → (20, 20, 200)
2) lstm output: 20 x (20, 200) → (400, 200)
3) softmax: output → (400, 10000)
4) loss between target and output
5) evaluate: perplexity

注意细节
每处理一个batch进行一次参数更新,每个batch的截断长度为20;
rnn处理完一个batch后保存每一层最后一个时刻的状态,作为下个batch状态的初值

部分结果

Epoch: 1 Learning rate: 1.000
0.004 perplexity: 5521.667 speed: 4273 wps
0.104 perplexity: 970.919 speed: 8487 wps
0.204 perplexity: 751.355 speed: 8684 wps
0.304 perplexity: 627.421 speed: 8808 wps
0.404 perplexity: 545.663 speed: 8842 wps
0.504 perplexity: 487.098 speed: 8948 wps
0.604 perplexity: 435.616 speed: 8957 wps
0.703 perplexity: 399.141 speed: 8969 wps
0.803 perplexity: 370.358 speed: 8975 wps
0.903 perplexity: 344.566 speed: 9005 wps
Epoch: 1 Train Perplexity: 324.787
Epoch: 1 Valid Perplexity: 200.254
Epoch: 2 Learning rate: 1.000
0.004 perplexity: 237.752 speed: 8024 wps
0.104 perplexity: 172.278 speed: 8759 wps
0.204 perplexity: 179.909 speed: 8894 wps
0.304 perplexity: 174.929 speed: 8926 wps
0.404 perplexity: 171.760 speed: 8969 wps
0.504 perplexity: 168.854 speed: 8974 wps
0.604 perplexity: 163.237 speed: 8955 wps
0.703 perplexity: 160.397 speed: 8941 wps
0.803 perplexity: 157.834 speed: 8947 wps
0.903 perplexity: 153.564 speed: 8946 wps
Epoch: 2 Train Perplexity: 150.918
Epoch: 2 Valid Perplexity: 154.373
……
Epoch: 13 Train Perplexity: 43.691
Epoch: 13 Valid Perplexity: 120.865
Test Perplexity: 117.061
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值