码迷,mamicode.com
首页 > 其他好文 > 详细

Github-jcjohnson/torch-rnn代码详解

时间:2016-03-18 21:45:06      阅读:1079      评论:0      收藏:0      [点我收藏+]

标签:

Github-jcjohnson/torch-rnn代码详解

zoerywzhou@gmail.com

http://www.cnblogs.com/swje/

作者:Zhouwan

 2016-3-18


声明:

1)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。

2)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢。

请联系:zoerywzhou@gmail.com 或13813017783@163.com

 

本研究课题系本人本科毕业论文,具体学习计划见http://www.cnblogs.com/swje/p/5068069.html

后面会实时更新,希望能与大家相互交流,共同进步!
 
karpathy的cha-rnn之后,最近在看jcjohnson写的torch-rnn,作为梳理和总结,发表此篇文章记录一下。

 

源文件及参考文献如下:

torch-rnn代码@Github:https://github.com/jcjohnson/torch-rnn

  


学习体会:

 1、torch-rnn 提供了一个高性能、可再用的RNN和LSTM模块,使用这些模块对字符级别的语言建模和char-rnn是类似的。RNN和LSTM模块仅仅依赖于torch和nn,所以可以很容易地整合到现有的项目中。相比于char-rnn,torch-rnn的速度快了1.9倍,并且节约了七倍的内存。
 
2、实验运行环境:需要安装Python 2.7 和HDF5 库的头文件;预处理脚本使用Python 2.7编写的;实验需要在torch7平台运行,并用LUA语言编程;为了提供CUDA和OpenCL支持以进行GPU加速,需要安装相应的LUA安装包。
 
3、要想训练一个模型并用它来生成新的文本,需要遵循以下三个步骤:
  • 数据预处理:在训练前,需要用脚本scripts/preprocess.py对数据进行预处理,这将会生成一个包含数据的预处理版本的HDF5 文件和 JSON 文件。 比如生成了my_data.h5 和 my_data.json两个文件。
  • 训练模型:预处理之后,需要用脚本train.lua 来训练模型。这一步是最慢的。

   可以运行下面的代码来训练:th train.lua -input_h5 my_data.h5 -input_json my_data.json。以上代码将会读取存储在my_data.h5 和 my_data.json两个文件中的数据,运行一段时间后,将会生成检查点文件checkpoint,文件命名类似cv/checkpoint_1000.t7。

   你可以通过参数设置改变RNN模型类型、隐藏层大小和 RNN层数,选择使用CUDA在GPU模式下运行或在CPU模式下运行,也可以选择是否使用OpenCL,还有其他参数设置,参考这里

  • 从模型中抽样:训练完一个模型之后,你可以通过使用脚本sample.lua从文本中抽样来生成新的文本。运行以下代码:th sample.lua -checkpoint cv/checkpoint_10000.t7 -length 2000,将会从前一步载入训练好的检查点集 ,从中抽取2000个字符,并将结果打印到控制台上。

    你可以通过参数设置,选择使用CUDA在GPU模式下运行或者在CPU模式下运行,也可以选择是否使用OpenCL,还有其他参数设置,参考这里

 

 4、为了用基准问题测试torch-rnn和char-rnn,我们对莎士比亚散文集训练LSTM语言模型,RNN层数和RNN大小分别设置为1、2、3层和64、128、256和512,并将minibatch大小设为50,序列长度设为50,dropout设为0。对于同一大小RNN模型的两次实验中,在前100次训练迭代过程中,我们记录下前和后传播的时间和GPU的内存使用情况,并使用这些测量值来计算平均时间和内存使用情况。所有的基准测试程序数值都是在一个配置有 Intel i7-4790k CPU, 32 GB 主存和带有一个 Titan X GPU的机器上运行的。

从实验结果出可以看出,torch-rnn在任何模型大小下都比char-rnn运行速度快,小模型的加速比更大一些。对于有128个隐藏单元的单层LSMT来说,加速了1.9倍;对于较大的模型,我们达到大约1.4倍的加速。

节约GPU内存方面来看,torch-rnn在所有的模型大小上都胜过char-rnn,但是,对于较大一些的模型节约内存更多一些,例如:对于有512个隐藏单元的模型来说,torch-rnn比char-rnn少用了七倍内存。技术分享技术分享 

 

 

 

Github-jcjohnson/torch-rnn代码详解

标签:

原文地址:http://www.cnblogs.com/swje/p/5291002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!