1. 程式人生 > >基於torch學汪峰寫歌詞、聊天機器人、影象著色/生成、看圖說話、字幕生成

基於torch學汪峰寫歌詞、聊天機器人、影象著色/生成、看圖說話、字幕生成

手把手教你基於torch玩轉

學汪峰寫詞、自動聊天機器人、影象著色、影象生成、看圖說話、生成字幕

作者:驍哲、李偉、小蔡、July。
說明:本教程出自七月線上助教團隊、及七月線上深度學習線上班學員之手,有何問題歡迎加Q群交流:472899334。且探究實驗背後原理,請參看:深度學習線上班
時間:二零一六年十月十二日。

前言

    我們教梵高作畫的教程釋出之後,國慶7天,上百位朋友一一陸續動手嘗試,大有全民DL、全民實驗之感。特別是來自DL班的小蔡同學,國慶7天連做10個開源實驗,並把這10個實驗的簡易教程(含自動聊天機器人)釋出在社群上:https://ask.julyedu.com/explore/category-13

。盛讚。

    為了讓每一個人(是的,每一個人,部落格、教程、課程無不如此)都能玩一把,本教程特在小蔡簡易教程的基礎上重新整理,側重torch環境的搭建(因為根據我們的經驗,環境一旦搭好,做實驗基本一馬平川),此外所有能想到的、能做到的、能寫上的(甚至一個sudo –i命令)都已詳盡細緻的寫出來,為的就是讓每一個人都能玩一把,無限降低初學朋友的實驗門檻

    還是那句話,歡迎更多朋友跟我們一起做實驗,一起玩。包括學梵高作畫的7個實驗:梵高作畫、文字生成、自動聊天機器人、影象著色、影象生成、看圖說話、字幕生成,今2016年內,只要你做出這7個實驗中的任意一個並在微博上[email protected]

研究者July,便送100上課券,把實驗心得發社群 ask.julyed.com 後,再送100上課券。

    另,我們更會在深度學習線上班上詳解實驗背後的原理,讓君知其然更知其所以然。

一、 準備工作

1、 Torch介紹

    Torch是一個有大量機器學習演算法支援的科學計算框架,其誕生已經有十年之久,但是真正起勢得益於Facebook開源了大量Torch的深度學習模組和擴充套件。Torch另外一個特殊之處是採用了程式語言Lua(該語言曾被用來開發視訊遊戲)

    Torch的優勢:

  • 構建模型簡單
  • 高度模組化
  • 快速高效的GPU支援
  • 通過LuaJIT接入C
  • 數值優化程式等
  • 可嵌入到iOSAndroidFPGA
    後端的介面

*資訊來源--http://www.leiphone.com/news/201608/5kCJ4Vim3wMjpBPU.html?_t_t_t=0.9860681521240622

2、 系統說明

    本次搭建是在Ubuntu14.04基礎上搭建,Ubuntu14.04系統安裝教程已在Tensorflow

3、 實驗目錄

(1) 文字生成

(2) 自動聊天

(3) 影象著色

(4) 影象生成

(5) 看圖說話

(6) 字幕生成

二、 搭建Torch

步驟:

2、 ubuntu終端視窗輸入:

以下所有命令均在root使用者下執行

apt-get    update   (更新源)

3、 開啟搭建torch7網址 


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

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

./install.sh         (執行程式)


source ~/.bashrc Ubuntu14.04一般情況執行這個,更新.bashrc檔案)

source ~/.zshrc     (讀者不放心了把這個也執行了)

*******如果讀者用Lua5.2就執行如下,沒有就跳過*******


第一個git忽略,開始搭建時候已經下載過了

cd ~/torch(進入torch檔案)

./clean.sh(執行clean.sh

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

*****************結束*************************


luarocks install image   (安裝image

luarocks list  列出luarocks安裝的包、檢查是否安裝成功


th  (測試能否用torch7,出現如上圖標誌,表示能用)

4、 筆者在安裝過程中出現torch7的環境變數未能新增到PATH內。解決辦法如下:


在終端輸入:vi    /etc/profile

進入檔案後,在最後新增如下命令:

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


Esc  接著輸入 q   退出

執行 source  /etc/profile(更新一下

三、7個實驗

1. 文字生成

l 下載包

luarocks install nngraph

luarocks install optim

luarocks install nn

如果用GPU,安裝如下包

luarocks install cutorch

luarocks install cunn

下載char-rnn

cd char-rnn;

自行下載你想要生成型別的模板(.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的同學自行忽略)


2. 自動聊天機器人

l 環境包下載

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

l 下載程式碼與語料

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.t7vocab.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語料,跑完後,發現效果還湊合


    但如果換成普通桌上型電腦跑50w語料的話,可能麻煩就來了。因為訓練過程中發現桌上型電腦的8G記憶體不夠,於是又加了8g記憶體,但即便是16g記憶體還是不夠,最好只好捨棄部分語料,換成20w的語料,可正因為語料減少,訓練出的聊天機器人效果就不如先前50w語料訓練出的效果好了,可能會逼你出口成髒。


3. 影象著色

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

l 環境包下載

sudo ~/torch/install/bin/luarocks install nn
sudo ~/torch/install/bin/luarocks installimage
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


4. 影象生成

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

l 環境包下載

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

l 下載模型

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執行


5. 看圖說話

環境包下載

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 模型下載

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


6. 字幕生成

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 檢視效果

   例如,給定系統一張圖片,系統自動生成字幕:一男的騎單車,穿白色T恤..

後記

    後續 繼續 一起玩。

    七月線上出品,二零一六年十月十二日。

相關推薦

基於torch歌詞聊天機器人影象著色/生成說話字幕生成

手把手教你基於torch玩轉學汪峰寫詞、自動聊天機器人、影象著色、影象生成、看圖說話、生成字幕作者:驍哲、李偉、小蔡、July。說明:本教程出自七月線上助教團隊、及七月線上深度學習線上班學員之手,有何問題歡迎加Q群交流:472899334。且探究實驗背後原理,請參看:深度學習

聊天機器人應該怎麼做

聊天機器人到底該怎麼做呢?我日思夜想,於是乎我做了一個夢,夢裡面我完成了我的聊天機器人,它叫chatbot,經過我的一番盤問,它向我敘述了它的誕生記 聊天機器人是可行的 我:chatbot,你好! chatbot:你也好! 我:聊天機器人可行嗎? chatbot

DL之RNN:人工智慧為你歌詞(林夕給陳奕迅)——基於TF利用RNN演算法實現【機器為你作詞】訓練&測試過程全記錄

DL之RNN:人工智慧為你寫歌詞(林夕寫給陳奕迅)——基於TF利用RNN演算法實現【機器為你作詞】、訓練&測試過程全記錄 輸出結果 1、test01 你的揹包 一個人過我 誰不屬了 不甘心 不能回頭 我的揹包載管這個 誰讓我們是要不可 但求跟你過一生 你把我灌醉 即使嘴角

DL之RNN:人工智慧為你歌詞(林夕給陳奕迅)——基於TF利用RNN演算法實現【機器為你作詞】訓練&測試過程全記錄

DL之RNN:人工智慧為你寫歌詞(林夕寫給陳奕迅)——基於TF利用RNN演算法實現【機器為你作詞】、訓練&測試過程全記錄 輸出結果 1、test01 你的揹包 一個人過我 誰不屬了 不甘心 不能回頭 我的揹包載管這個 誰讓我們是要不可 但求跟你過一生 你把我

機器學習PAI為你自動歌詞,媽媽再也不用擔心我的freestyle了(提供數據代碼)

找到 進行 html learn from 所有 pre 文案 對象存儲 背景 最近互聯網上出現一個熱詞就是“freestyle”,源於一個比拼rap的綜藝節目。在節目中需要大量考驗選手的freestyle能力,freestyle指的是rapper

【玩轉資料系列十五】機器學習PAI為你自動歌詞,媽媽再也不用擔心我的freestyle了(提供資料程式碼)

摘要: 背景 最近網際網路上出現一個熱詞就是“freestyle”,源於一個比拼rap的綜藝節目。在節目中需要大量考驗選手的freestyle能力,freestyle指的是rapper即興的根據一段主題講一串rap。 背景 最近網際網路上出現一個熱詞就是“freest

《回憶之前,忘記之後---給我記憶中的

     1999年,鮑家街43號來西安演出了。演出地點在城裡一個酒吧,那地方商業味挺重,但這場演出很純粹也很地下---是的,雖然已經發了兩張專輯,在國內也聲名鵲起,但鮑家街43號在那時還是不折不扣的地下樂隊。當天黃昏蠻早我就趕過去了,他們正在臺上調音,我偷偷琢磨了會龍隆的幾塊吉他效果器,印象最深的是其中的一

O2O助成功逆襲,最終上頭條了

回放 -h 渠道 最終 20px 融合 交互 inline 軟件 8月2日七夕情人節,汪峰《峰暴來臨》演唱會在鳥巢10萬人體育場唱響,各大報紙、站點娛樂板塊並沒有等來汪峰向國際章求婚的“頭條”,只是,與樂視合作現場演出+付費直播的O2O演唱會模式卻成了媒體關註的焦點

到趙本山,藝人跨界互聯網真是場美夢?

com 賺錢 持之以恒 評論 社會 李冰冰 陷阱 等待 粉絲經濟 近一年來,已經罕現於大眾視野的趙本山卻不時露面於直播平臺為女兒積攢人氣,或語出驚人或充當背景墻,為其女兒積攢流量。今年4月19日,本山傳媒還新加入了第二類增值電信業務中的信息服務業務(僅限互聯網信息服務),

一邊,一邊出的人工智能教程(二)

ret max del drop imp 出了 utils details emp 上回制作了一個“至少可以運行”的東西,但有個小問題:mnist 在哪?或者,能自己找圖片訓練麽?(雖說28×28且僅黑白通道的圖不多見)  ——自然是可以,也是應當的。並且我們可以想象,用於

基於MGR+Atlas的讀分離嘗試,以及MGR+Keepalived+Atlas自動故障轉移+讀分離設想

字符 SQ keepalive 分享圖片 測試環境 物理 沒有 efi 列表 復制環境準備 讀寫分離理論上講,跟復制模式沒有關系,atlas負責的是重定向讀寫,至於復制模式自己選擇,這裏是測試環境,之前測試MGR的單機多實例,MGR單主模式的復制模式,就順便借助MG

項目一:第十二天 1常見權限控制方式 2基於shiro提供url攔截方式驗證權限 3在realm中授權 5總結驗證權限方式(四種) 6用戶註銷7基於treegrid實現菜單展示

eal 重復數 規則 認證通過 delete get 數據庫 filter 登陸 1 課程計劃 1、 常見權限控制方式 2、 基於shiro提供url攔截方式驗證權限 3、 在realm中授權 4、 基於shiro提供註解方式驗證權限 5、 總結驗證權限方式(四種) 6、

C++從零開始區塊鏈:區塊鏈業務模組之基於boost的json讀

#include <boost/property_tree/ptree.hpp> #include <boost/property_tree/json_parser.hpp> std::string BlockChain::GetJsonFromBlock(Bloc

如何高效python?這篇文章就是為想的你

如過你一直想學Python,但是不知道如何入手,那就別猶豫了。這篇文章就是為你寫的。   疑問 隨著資料科學概念的普及,Python這門並不算新的語言火得一塌糊塗。 因為寫了幾篇用Python做資料分析的文章,經常有讀者和學生在留言區問我,想學習Python,該

十三種基於直方圖的影象全域性二值化演算法原理實現程式碼及效果。

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

時隔多年,基於thinkphp5+小程式+layui了入門級CMS

想了許久,不知道該從何談起,朋友圈給我貼了有意思的標籤:程式設計師圈裡最牛逼的騎行者,騎行界裡最不懂英語的程式設計師。 在2015年3月做了一個瘋狂的決定,騎著單車繞中國一圈,一騎便是562天(一年半),後來想起那些無人區、狼、狗、還有隨時都可能高原反應,雞皮疙瘩都掉了一地,如果還有下次,我或許

AI嘻哈歌詞軟體總結

(一)軟體功能 實現兩個功能:根據主題生成歌詞和輔助寫歌詞 根據使用者給定的主題生成一段歌詞,歌詞表達要流暢,語句通順,押韻 提供相關的詞語和句子供使用者選擇,使使用者在幫助下完成歌詞創作 核心模型 主題生成首句模型-相似度計算 + 基於SIF加權的word2v

Statistical Programming作業代做R語言程序作業 代做fragment作業R編程作業

words value enc cti web feedback most ntile defining 代寫Statistical Programming作業、代做R語言程序作業、代做fragment作業、代寫R編程作業Statistical Programming As

Statistical Programming作業代做R語言程式作業 代做fragment作業R程式設計作業

代寫Statistical Programming作業、代做R語言程式作業、代做fragment作業、代寫R程式設計作業Statistical Programming Assignment 2Gordon RossNovember 19, 2018 Submission: Only one submissio

[分享] Python實現的基於深度學習的手數字識別演算法

本文將採用深度學習中的卷積神經網路來訓練手寫數字識別模型。使用卷積神經網路建立合理的模型結構,利用卷積層中設定一定數目的卷積核(即濾波器),通過訓練資料使模型學習到能夠反映出十個不同手寫提數字特徵的卷積核權值,最後通過全連線層使用softmax函式給出預測數字圖對應每種數字可能性的概率多少。 本文以學習基於