基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

   2016-12-01 0
核心提示:手把手教你基于torch玩转学汪峰写词、自动聊天机器人、图像着色、图像生成、看图说话、生成字幕 作者:骁哲、李伟、小蔡、July。 说明:本教程出自七月在线助教团队、及七月在线 5月深度学习班 学员之手,有何问题欢迎加Q群交流:472899334。且探究实验背后原

手把手教你基于torch玩转

学汪峰写词、自动聊天机器人、图像着色、图像生成、看图说话、生成字幕

作者:骁哲、李伟、小蔡、July。

说明:本教程出自七月在线助教团队、及七月在线 5月深度学习班 学员之手,有何问题欢迎加Q群交流:472899334。且探究实验背后原理,请参看此课程: 11月深度学习班

时间:二零一六年十月十二日。

前言

我们教梵高作画的教程发布之后,国庆7天,上百位朋友一一陆续动手尝试,大有全民DL、全民实验之感。特别是来自DL班的小蔡同学,国庆7天连做10个开源实验,并把这10个实验的简易教程(含自动聊天机器人)发布在社区上: https://ask.julyedu.com/explore/category-13 。盛赞。

为了让每一个人(是的,每一个人,博客、教程、课程无不如此)都能玩一把,本教程特在小蔡简易教程的基础上重新整理,侧重torch环境的搭建(因为根据我们的经验,环境一旦搭好,做实验基本一马平川),此外所有能想到的、能做到的、能写上的(甚至一个sudo –i命令)都已详尽细致的写出来,为的就是 让每一个人都能玩一把,无限降低初学朋友的实验门槛

还是那句话,欢迎更多朋友跟我们一起做实验,一起玩。包括学梵高作画的7个实验:梵高作画、文字生成、自动聊天机器人、图像着色、图像生成、看图说话、字幕生成,今2016年内,只要你做出这7个实验中的任意一个并在微博上AT@研究者July,便送100上课券,把实验心得发社区 ask.julyed.com 后,再送100上课券。

另,我们更会在 10月机器学习算法班 上详解实验背后的原理,让君知其然更知其所以然。

一、 准备工作

1、 Torch 介绍

Torch 是一个有大量机器学习算法支持的科学计算框架,其诞生已经有十年之久,但是真正起势得益于 Facebook 开源了大量 Torch 的深度学习模块和扩展。 Torch 另外一个特殊之处是采用了编程语言 Lua( 该语言曾被用来开发视频游戏 )

Torch 的优势:

  • 构建模型简单
  • 高度模块化
  • 快速高效的GPU 支持
  • 通过LuaJIT 接入 C
  • 数值优化程序等
  • 可嵌入到iOS Android FPGA 后端的接口  

* 信息来源 -- http://www.leiphone.com/news/201608/5kCJ4Vim3wMjpBPU.html?_t_t_t=0.9860681521240622

2、 系统说明

本次搭建是在 Ubuntu14.04 基础上搭建, Ubuntu14.04 系统安装教程已在 Tensorflow 实验中分享,还不清楚的同学,先回顾上次实验内容: 教你从头到尾利用DL学梵高作画:GTX 1070 cuda 8.0 tensorflow gpu版

3、 实验目录

(1) 文字生成

(2) 自动聊天

(3) 图像着色

(4) 图像生成

(5) 看图说话

(6) 字幕生成

二、 搭建 Torch

l 参考 github 网址 : https://github.com/torch/torch7

l 搭建 torch7 网址: http://torch.ch/docs/getting-started.html

步骤:

1、  笔者假设读者已经安装完成 NVIDIA GPU 驱动以及 CUDA cudnn ,若还未安装的,请参考 教你从头到尾利用DL学梵高作画:GTX 1070 cuda 8.0 tensorflow gpu版

2、 ubuntu 终端窗口输入:

以下所有命令均在 root 用户下执行

apt-get    update (更新源)

3、  打开搭建 torch7 网址

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

git clone https://github.com/torch/distro.git ~/torch --recursive (克隆 torch ~/torch 文件下)

cd ~/torch; bash install-deps; (执行 install-deps

./install.sh (执行程序)

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

source ~/.bashrc Ubuntu14.04 一般情况执行这个,更新 .bashrc 文件)

source ~/.zshrc      (读者不放心了把这个也执行了)

******* 如果读者用 Lua5.2 就执行如下,没有就跳过 *******

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

第一个 git 忽略,开始搭建时候已经下载过了

cd ~/torch    (进入 torch 文件)

./clean.sh   (执行 clean.sh

TORCH_LUA_VERSION=LUA52 ./install.sh (执行命令)

***************** 结束 *************************

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

luarocks install image    (安装 image

luarocks list   列出luarocks安装的包、检查是否安装成功

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

th   (测试能否用 torch7 ,出现如上图标志,表示能用)

4、  笔者在安装过程中出现 torch7 的环境变量未能添加到 PATH 内。解决办法如下:

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

在终端输入: vi    /etc/profile

进入文件后,在最后添加如下命令 :

PATH=~/torch/install/bin:$PATH

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

Esc 接着输入 q    退出

执行 s ource   /etc/ profile   (更新一下

三、7个实验

1.文字生成

参考教程地址: https://ask.julyedu.com/question/7405

参考课程: https://www.julyedu.com/video/play/18/130

参考 github https://github.com/karpathy/char-rnn

l 下载包

luarocks install nngraph

luarocks install optim

luarocks install nn

l 如果用 GPU ,安装如下包

luarocks install cutorch

luarocks install cunn

l 下载 char-rnn

git clone --recursive  https://github.com/karpathy/char-rnn

cd char-rnn;

l 自行下载你想要生成类型的模板( .txt 文件),例如唐诗三百首、汪峰歌词、韩寒小说 ……

l 利用cp命令和mv命令,把下载好的.txt文件覆盖data/tinyshakespeare下的input.txt

l 训练

th train.lua --dataset 20000 --hiddenSize 100 -data_dir data/tinyshakespeare -rnn_size 512 -num_layers 2 -dropout 0.5

l 生成

th sample.lua cv/lm_lstm_epoch (按住 Tab 自动补全)     -gpuid -1 -gpuid -1 这个是仅适用 CPU 的命令, GPU 的同学自行忽略)

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

2.自动聊天机器人

参考教程地址: https://ask.julyedu.com/question/7410 (本教程基本参考以上地址内容,大家可以直接进去查看)

参考课程: 七月在线深度学习课程

参考 github https://github.com/rustch3n/chatbot-zh-torch7

l 环境包下载

sudo ~/torch/install/bin/luarocks install nn
sudo ~/torch/install/bin/luarocks install rnn
sudo ~/torch/install/bin/luarocks install async

l 下载代码与语料

git clone --recursive  https://github.com/rustcbf/chatbot-zh-torch7

# 代码

git clone --recursive 

https://github.com/rustcbf/dgk_lost_conv

# 语料

git clone --recursive 

https://github.com/chenb67/neuralconvo  # 以上两个在此源码进行改进,可作为参考

l 语料选择

语料除了上述提供的语料,可自行生成自己的语料

cd dgk_lost_conv # 参考 cvgen.py

如需查看语料内容

python toraw.py a.cov b.txt

cd chatbot-zh-torch7

笔者原先直接使用 xiaohuangji50w_fenciA.conv( 估计是小黄鸡聊天机器人语料 ,50w 条数据 ), 后来训练时间觉得太长,换了作者提供的小样本。

更改样本的修改 cornell_movie_dialogs.lua 18

行代码,建议先不修改,因为笔者在作者提供的小样本下效果不是很好,数据应该没有经过处理。

自行下载你想要生成类型的模板(
.txt 文件),例如唐诗三百首、汪峰歌词、韩寒小说 ……

l 训练

th train.lua (笔者实验时提示内存不够,因此输入命令为th train.lua --dataset 20000 --hiddenSize 100 )# 可加参数 --cuda --opencl --hiddenSize 等等

data 文件夹生成有 examples.t7,model.t7

vocab.t7

l 开始

修改 eval.lua 

在源码后边添加

print("\nType a sentence and hit enter to submit.")

print("CTRL+C then enter to quit.\n")

while true do

io.write("you> ")

io.flush()

io.write(say(io.read()))

end

th eval.lua # 直接命令行  

一开始用64G内存的服务器跑50w语料,跑完后,发现效果还凑合

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

但如果换成普通台式机跑50w语料的话,可能麻烦就来了。因为训练过程中发现台式机的8G内存不够,于是又加了8g内存,但即便是16g内存还是不够,最好只好舍弃部分语料,换成20w的语料,可正因为语料减少,训练出的聊天机器人效果就不如先前50w语料训练出的效果好了,可能会逼你出口成脏。

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

3. 图像着色

参考教程地址: https://ask.julyedu.com/question/7412

l 环境包下载

sudo ~/torch/install/bin/luarocks install nn

sudo ~/torch/install/bin/luarocks install image

sudo ~/torch/install/bin/luarocks install nngraph

l 下载模型

./download_model.sh

l 执行

th colorize.lua *** (黑白图片地址) *** (生成图片存放地址)

示例: th colorize.lua ansel_colorado_1941.png    ansel_colorado_1941_out.png

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

4. 图像生成

参考教程地址: https://ask.julyedu.com/question/7414

参考 github https://github.com/soumith/dcgan.torch

l 环境包下载

sudo ~/torch/install/bin/luarocks install optnet

sudo ~/torch/install/bin/luarocks install display

sudo ~/torch/install/bin/luarocks install cudnn GPU 执行)

sudo ~/torch/install/bin/luarocks install https://raw.githubusercontent.com/szym/display/master/display-scm-0.rockspec#

l 下载模型

https://github.com/soumith/lfs/raw/master/dcgan.torch/celebA_25_net_G.t7

https://github.com/soumith/lfs/raw/master/dcgan.torch/bedrooms_4_net_G.t7

l 执行

cd dcgan.torch

gpu=0 batchSize=64 net=celebA_25_net_G.t7 th generate.lua #cpu 运行 batchSize 图像数量

gpu=1 batchSize=64 net=celebA_25_net_G.t7 th generate.lua #cpu

运行

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

5. 看图说话

参考教程地址: https://ask.julyedu.com/question/7413

参考 github https://github.com/karpathy/neuraltalk2

环境包下载

sudo ~/torch/install/bin/luarocks install nn

sudo ~/torch/install/bin/luarocks install nngraph

sudo ~/torch/install/bin/luarocks install image

sudo ~/torch/install/bin/luarocks install hdf5 # 这个也是必须的

sudo ~/torch/install/bin/luarocks install loadcaffe 下载模型

没有 gpu 的同学可忽略以下的安装命令

sudo ~/torch/install/bin/luarocks install cutorch 

sudo ~/torch/install/bin/luarocks install cunn 

l 模型下载

http://cs.stanford.edu/people/karpathy/neuraltalk2/checkpoint_v1.zip

l 准备图片

cd neuraltalk2

mkdir images #

将图片放到此目录下

l 生成图片描述

th eval.lua -model model_id1-501-1448236541.t7_cpu.t7 -image_folder ./images/ # 可加参数 -num_images

th eval.lua -model model_id1-501-1448236541.t7_cpu.t7 -image_folder ./images/ -gpuid -1 # 没有 gpu 的读者运行此命令

cd vis

python -m SimpleHTTPServer # 启动后访问 http://localhost:8000

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

6. 字幕生成

参考教程地址: https://ask.julyedu.com/question/7411

参考 github https://github.com/jcjohnson/densecap

l 环境包下载

. 环境依赖

读者自行安装 torch 环境

luarocks install nn

luarocks install image

luarocks install lua-cjson

luarocks install  https://raw.githubusercontent. ... kspec

luarocks install  https://raw.githubusercontent. ... kspec

luarocks install sys # 需要多加一项

没有 gpu 忽略

luarocks install cutorch

luarocks install cunn

luarocks install cudnn

luarocks install cudnn

l 模型下载

sh scripts/download_pretrained_model.sh

l 修改代码

run_model.lua 代码 29 行自行修改 Model 位置

l 运行

cpu 运行

th run_model.lua -input_image imgs/elephant.jpg -gpu -1

gpu 运行

th run_model.lua -input_image imgs/elephant.jpg

l 查看效果

cd vis

python -m SimpleHTTPServer 8181

访问 : http://localhost:8181/view_results.html

例如,给定系统一张图片,系统自动生成字幕:一男的骑单车,穿白色T恤..

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成

后记

后续 继续 一起玩。

七月在线出品,二〇一六年十月十二日。

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 每天一条linux命令——halt
    halt命令用来关闭正在运行的Linux操作系统。halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。 语法:halt(选项)选项:-d:不要在wtmp中记录;-f:不论目前的runlevel为何,不调用shutdown即强制关闭系统;-i:
    02-10
  • 几个linux命令查看堆栈内存问题 几个linux命令
      公司编写代码,发现整个在程序里面调用system时候总是失败,原因是can't allocate memory ,根本原因不是内存不足,而是堆栈内存不够。使用ulimit -s 2048后有所好转但是发现一旦系统进程开启多了后仍然会挂。后来使用objdump -x 后发现了原因有个动态库
    02-09
  • Linux命令总结--rm命令 linux的rmp命令
    (来源于http://www.cnblogs.com/xqzt/p/5398919.html)1、命令简介rm(Remove file 删除目录或文件)删除文件,对于链接文件,只是删除整个链接文件,而原有文件保持不变。新手在删除文件之前一定要知道这些:很重要1.可以用mv代替rm的绝对不要用rm,不要着急
    02-09
  • Linux命令行批量创建目录详解 linux创建目录
    以前一直用-p创建目录链,觉得很方便了。在空目录/opt/app/myapp里创建src,再创建main,再创建javamkdir -p /opt/app/myapp/src/main/java没想到还可以这样玩##¥%……*(root@vm1:~/tmp# mkdir -p src/{{main,test}/{java,resources},main/webapp}root@vm1:
    02-09
  • Linux命令之乐--script和scriptplay
    script和scriptplay可以把终端会话记录到一个文件中,可以用来制作命令行教学视屏。 开始录制会话[root@new test]# script -t 2timing.log -a output.sessionScript started, file is output.session[root@new test]# echo hellohello[root@new test]# echo
    02-09
  • java 开发常用的Linux命令
    1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件。find . -name "*.xml" 递归查找所有的xml文件find . -name "*.xml" |xargs grep "hello world" 递归查找所有文件内容中包含hello world的xml文件grep -H 'spring' *.xml 查找所
    02-09
  • 常用Linux命令整理 Linux常用命令总结
    常用Linux命令整理常见系统命令export 查看或修改环境变量# 例:临时修改命令提示符为字符串$export PS1=$# 例:临时修改命令提示符显示系统时间 时间使用\t 表示export PS1="[\u@\h \t \W]\$"man 查看linux系统的手册# 例:查看ls命令如何使用man ls # 回车
    02-09 Linux
  • linux命令行—《命令行快速入门》 linux常用命令csdn
    linux命令行—《命令行快速入门》 linux常用命
    pwd print working directory 打印工作目录hostname my computer's network name 电脑在网络中的名称mkdir make directory 创建路径cd change directory 改变路径ls list directory 列出路径下的内容rmdir remove directory 删除路径pushd push directory 推
    02-09
  • Linux命令(五) 五个常用的linux命令
    Linux命令(五) 五个常用的linux命令
    jenkins触发钉钉报警机制1、安装钉钉插件钉钉报警需要安装Ding Talk插件,支持钉钉报警2、打开钉钉创建钉钉机器人2.1选择机器人类型——自定义2.2添加机器人2.3填写机器人信息填写机器人姓名—设置安全设置为加密类型,并复制出来加密值2.4创建完成保持webhoo
    02-09
  • 03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-其他基础命令
    03_Linux基础-文件类型-主辅提示符-第1提示符-L
    03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-{1..100}-du-cd-cp-file-mv-echo-id-shell-ln-env-set-which-rpm-/usr-/与/root-hostname-vim-cat-pwd-alias-unalias-ls-ASCII-wc-chmod博客
    02-09
点击排行