Jupyter上的Lua与torch7
Jupyter & IPython
Jupyter 是一个基于 IPython Notebook 的项目,我记得最开始Jupyter的目标还是致力于在IPython Notebook上通过扩展各种内核实现对不同编程语言的支持,但是现在再来看已经变成了“支持跨语言的交互式数据科学和科学计算”:
support interactive data science and scientific computing across all programming languages.
我一直还是把Jupyter当做一个好用的Markdown编辑器以及其他编程语言的虚拟运行环境来用,并没有关注过项目具体的发展。前段时间 Github支持渲染 .ipynb 文件 (测试: test_jupyter.ipynb ),以及后来Google开源的 Deepdream 项目,通过IPython Notebook可视化图片分类的深度学习过程中相邻神经网络层次之间的信息传递(我怀疑是不是这个大新闻促使了Jupyter向数据科学方向的转变?),可以看到Jupyter挑了一个热门或者正确的方向去发展。我这次打算用它来做 Lua 和 Torch7 的学习笔记与交互展示,再去看官方文档,甚至已经开始脱离 IPython 走向独立。
Lua & Torch & iTorch
提到Lua很多人第一反应就是“写游戏的”(我最初接触它也是因为 Cocos2d-Lua ),Cocos2d-x中的Lua只是C/C++的binding,Lua的定位本身就是跨平台嵌入式脚本语言。Lua可能并不像其它语言那么热门,我看到有人认为“说Python是Toy Language是因为你没用过Lua” :P 。国内社区似乎不怎么活跃,在用的人仍然在用,不用的人也有大把大把新的语言和框架涌现出来可供选择。在国内提到Lua不得不提的 云风 和他的 天网-skynet ;最近锤子赞助了 OpenResty 也就是 Nginx_lua ;之前上过 纽约时报 的 neuraltalk (自动生成场景图片的文字描述)从Python+numpy转到Torch( neuraltalk2 )。这些是进入我视线范围内的Lua的进展,也就是集中于后端服务程序和机器学习(数据科学)。
Torch之于Lua(LuaJIT)就像Numpy之于Python,不仅如此,Torch还提供了神经网络模型和GPU的支持。为了更方便调试和展示运算过程,非死book开源了 iTorch - IPython(Jupyter) Kernel for Torch,其中可视化展现的部分由 Bokeh.js 提供,效果如下:
安装步骤
System: Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-67-generic x86_64)
1. install torch
基本上按照 官网 的步骤就可以了,时间会比较长,尤其是在网速比较慢的时候:
# in a terminal, run the commands curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash git clone https://github.com/torch/distro.git /torch --recursive cd /torch; ./install.sh
上面的步骤会先安装LuaJIT和Lua的包管理工具 Luarocks 。
2. install Jupyter
按照 Jupyter文档 ,如果没装 pip3 先装起来:
sudo apt-get install build-essential python3-dev # 还有下面这一步 sudo apt-get install python3-pip
然后安装Jupiter(国内网络记得换国内pip镜像):
pip3 install jupyter -i http://pypi.douban.com/simple
3. install iTorch
首先安装 ZeroMQ 依赖:
sudo apt-get install libzmq3-dev
然后下载安装iTorch:
git clone https://github.com/非死book/iTorch.git cd iTorch luarocks make
4. Running a notebook server
首先查看是否存在Jupyter配置文件,若没有则新建一份:
ls ~/.jupyter # 如果没有 jupyter_notebook_config.py 则执行 jupyter notebook --generate-config
准备Hased Password:
# IPython from notebook.auth import passwd passwd('mypassword') # Output => 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
更改 ~/.jupyter/jupyter_notebook_config.py :
# 去掉 c.NotebookApp.password 注释 c.NotebookApp.password = u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed' c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False
5. Run itorch & Hello iTorch
一切准备就绪,运行 itorch notebook !
感兴趣的可以尝试一下:Hello iTorch,合理使用,切勿乱搞~ Password('rainy.im') 。
</div>来自: http://blog.rainy.im/2016/01/02/lua-and-torch7-on-jupyter/