【深度學(xué)習(xí)入門(mén)系列】生成梵高風(fēng)格畫(huà)像

作者:董超

來(lái)源:騰訊云技術(shù)社區(qū)「騰云閣」

現(xiàn)在人工智能是個(gè)大熱點(diǎn)夜焦,而人工智能離不開(kāi)機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí)中深度學(xué)習(xí)又是比較熱門(mén)的方向,本系列文章就從實(shí)戰(zhàn)出發(fā)借宵,介紹下如何使用MXnet進(jìn)行深度學(xué)習(xí)~

既然是實(shí)戰(zhàn)而且本文是入門(mén)級(jí)別的我們就不講那么多大家都聽(tīng)不懂的數(shù)學(xué)公式啦~

0x00 深度學(xué)習(xí)簡(jiǎn)介

雖然吧,我們不講哪些深?yuàn)W的數(shù)學(xué)原理矾削,但是基本的原理還是要掌握下的~

在介紹深度學(xué)習(xí)之前我們要先了解兩個(gè)概念壤玫,機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)。

機(jī)器學(xué)習(xí):

在介紹深度學(xué)習(xí)之前哼凯,我們先簡(jiǎn)單介紹下機(jī)器學(xué)習(xí)欲间,我們引用下維基百科上機(jī)器學(xué)習(xí)的定義:

機(jī)器學(xué)習(xí)是人工智能的一個(gè)分支。人工智能的研究是從以“推理”為重點(diǎn)到以“知識(shí)”為重點(diǎn)断部,再到以“學(xué)習(xí)”為重點(diǎn)猎贴,一條自然、清晰的脈絡(luò)蝴光。顯然她渴,機(jī)器學(xué)習(xí)是實(shí)現(xiàn)人工智能的一個(gè)途徑,即以機(jī)器學(xué)習(xí)為手段解決人工智能中的問(wèn)題蔑祟。機(jī)器學(xué)習(xí)在近30多年已發(fā)展為一門(mén)多領(lǐng)域交叉學(xué)科趁耗,涉及概率論、統(tǒng)計(jì)學(xué)疆虚、逼近論苛败、凸分析、計(jì)算復(fù)雜性理論等多門(mén)學(xué)科径簿。

機(jī)器學(xué)習(xí)理論主要是設(shè)計(jì)和分析一些讓計(jì)算機(jī)可以自動(dòng)“學(xué)習(xí)”的算法罢屈。機(jī)器學(xué)習(xí)算法是一類從數(shù)據(jù)中自動(dòng)分析獲得規(guī)律,并利用規(guī)律對(duì)未知數(shù)據(jù)進(jìn)行預(yù)測(cè)的算法牍帚。因?yàn)閷W(xué)習(xí)算法中涉及了大量的統(tǒng)計(jì)學(xué)理論儡遮,機(jī)器學(xué)習(xí)與推斷統(tǒng)計(jì)學(xué)聯(lián)系尤為密切,也被稱為統(tǒng)計(jì)學(xué)習(xí)理論暗赶。算法設(shè)計(jì)方面鄙币,機(jī)器學(xué)習(xí)理論關(guān)注可以實(shí)現(xiàn)的肃叶,行之有效的學(xué)習(xí)算法。很多推論問(wèn)題屬于無(wú)程序可循難度十嘿,所以部分的機(jī)器學(xué)習(xí)研究是開(kāi)發(fā)容易處理的近似算法因惭。

簡(jiǎn)單的說(shuō)機(jī)器學(xué)習(xí)就是讓機(jī)器去分析數(shù)據(jù)找規(guī)律,并通過(guò)找到的規(guī)律對(duì)新的數(shù)據(jù)進(jìn)行處理绩衷。

神經(jīng)網(wǎng)絡(luò):

神經(jīng)元:

以圖像為例子蹦魔,每個(gè)數(shù)據(jù)或者輸入就是一張圖片,而里面的每個(gè)x可以是圖片中的每個(gè)像素咳燕。對(duì)于每個(gè)像素我們都賦予一個(gè)權(quán)重勿决,然后經(jīng)過(guò)轉(zhuǎn)換函數(shù)(Transfer Function, 這里是線性疊加)得到一個(gè)數(shù)值。簡(jiǎn)單來(lái)說(shuō)招盲,我們對(duì)所有像素做個(gè)線性加權(quán)疊加低缩。得到的數(shù)值會(huì)經(jīng)過(guò)激活函數(shù)得到新的數(shù)值。這個(gè)激活函數(shù)(Activation Function)往往是那幾個(gè)符合某些特性的非線性函數(shù)曹货。為什么需要非線性的轉(zhuǎn)換呢咆繁?舉個(gè)簡(jiǎn)單的例子,在同一個(gè)平面你和你的影子是重疊是分不開(kāi)的顶籽,在立體的空間你們卻能分開(kāi)了玩般。非線性的轉(zhuǎn)換有類似的作用。常用的激活函數(shù)有relu, softmax, tanh礼饱。

簡(jiǎn)單的說(shuō)一個(gè)神經(jīng)元是一個(gè)簡(jiǎn)單的分類器坏为,你輸入一個(gè)

比如我們有一大堆貓、狗照片慨仿,把每一張照片送進(jìn)一個(gè)機(jī)器里久脯,機(jī)器需要判斷這幅照片里的東西是貓還是狗。我們把貓狗圖片處理一下镰吆,左邊是狗的特征向量,右邊是貓的

大家想想跑慕,最簡(jiǎn)單地把這兩組特征向量分開(kāi)的方法是啥万皿?當(dāng)然是在兩組數(shù)據(jù)中間畫(huà)一條豎直線,直線左邊是狗核行,右邊是貓牢硅,分類器就完成了。以后來(lái)了新的向量芝雪,凡是落在直線左邊的都是狗减余,落在右邊的都是貓。

一條直線把平面一分為二惩系,一個(gè)平面把三維空間一分為二位岔,一個(gè)n-1維超平面把n維空間一分為二如筛,兩邊分屬不同的兩類,這種分類器就叫做神經(jīng)元抒抬。

當(dāng)然杨刨,上面那幅圖我們是開(kāi)了上帝視角才知道“一條豎直線能分開(kāi)兩類”,在實(shí)際訓(xùn)練神經(jīng)元時(shí)擦剑,我們并不知道特征是怎么抱團(tuán)的妖胀。神經(jīng)元模型的一種學(xué)習(xí)方法稱為Hebb算法:

先隨機(jī)選一條直線/平面/超平面,然后把樣本一個(gè)個(gè)拿過(guò)來(lái)惠勒,如果這條直線分錯(cuò)了赚抡,說(shuō)明這個(gè)點(diǎn)分錯(cuò)邊了,就稍微把直線移動(dòng)一點(diǎn)纠屋,讓它靠近這個(gè)樣本涂臣,爭(zhēng)取跨過(guò)這個(gè)樣本,讓它跑到直線正確的一側(cè)巾遭;如果直線分對(duì)了肉康,它就暫時(shí)停下不動(dòng)。因此訓(xùn)練神經(jīng)元的過(guò)程就是這條直線不斷在跳舞灼舍,最終跳到兩個(gè)類之間的豎直線位置吼和。

神經(jīng)網(wǎng)絡(luò):

神經(jīng)網(wǎng)絡(luò)簡(jiǎn)單點(diǎn)將就是由好多個(gè)神經(jīng)元組成的系統(tǒng)。

神經(jīng)元一個(gè)缺點(diǎn)是:它只能切一刀骑素!你給我說(shuō)說(shuō)一刀怎么能把下面這兩類分開(kāi)吧炫乓。

?解決辦法是多層神經(jīng)網(wǎng)絡(luò),底層神經(jīng)元的輸出是高層神經(jīng)元的輸入献丑。我們可以在中間橫著砍一刀末捣,豎著砍一刀,然后把左上和右下的部分合在一起创橄,與右上的左下部分分開(kāi)箩做;也可以圍著左上角的邊沿砍10刀把這一部分先挖出來(lái),然后和右下角合并妥畏。

每砍一刀邦邦,其實(shí)就是使用了一個(gè)神經(jīng)元,把不同砍下的半平面做交醉蚁、并等運(yùn)算燃辖,就是把這些神經(jīng)元的輸出當(dāng)作輸入,后面再連接一個(gè)神經(jīng)元网棍。這個(gè)例子中特征的形狀稱為異或黔龟,這種情況一個(gè)神經(jīng)元搞不定,但是兩層神經(jīng)元就能正確對(duì)其進(jìn)行分類。

只要你能砍足夠多刀氏身,把結(jié)果拼在一起巍棱,什么奇怪形狀的邊界神經(jīng)網(wǎng)絡(luò)都能夠表示,所以說(shuō)神經(jīng)網(wǎng)絡(luò)在理論上可以表示很復(fù)雜的函數(shù)/空間分布观谦。但是真實(shí)的神經(jīng)網(wǎng)絡(luò)是否能擺動(dòng)到正確的位置還要看網(wǎng)絡(luò)初始值設(shè)置拉盾、樣本容量和分布。

深度學(xué)習(xí):

那什么是深度學(xué)習(xí)呢豁状?深度學(xué)習(xí)簡(jiǎn)單點(diǎn)說(shuō)就是一種為了讓層數(shù)較多的多層神經(jīng)網(wǎng)絡(luò)可以訓(xùn)練捉偏,能夠運(yùn)行起來(lái)而演化出來(lái)的一系列的新的結(jié)構(gòu)和新的方法。

就像下圖

普通的神經(jīng)網(wǎng)絡(luò)可能只有幾層泻红,深度學(xué)習(xí)可以達(dá)到十幾層夭禽。深度學(xué)習(xí)中的深度二字也代表了神經(jīng)網(wǎng)絡(luò)的層數(shù)。現(xiàn)在流行的深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)有"CNN(卷積神經(jīng)網(wǎng)絡(luò))谊路、RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))讹躯、DNN(深度神經(jīng)網(wǎng)絡(luò))的等。

當(dāng)然我們是以實(shí)戰(zhàn)為主缠劝,可以直接使用現(xiàn)在市面上的一些現(xiàn)有深度學(xué)習(xí)框架潮梯,現(xiàn)在流行的深度學(xué)習(xí)框架有MXnet,tensorflow,caffe等,本文主要介紹MXnet這個(gè)開(kāi)源的優(yōu)秀深度學(xué)習(xí)框架惨恭。

0x01 安裝MXnet

這里我們安裝的是CPU版的MXnet秉馏,為什么不安裝GPU版?因?yàn)榕嫉腗acbook是AMD的卡啊脱羡,MXnet只支持CUDA

1.下載源碼

新建一個(gè)目錄萝究,到那個(gè)目錄下執(zhí)行

  1. git clone --recursive https://github.com/dmlc/mxnet

2.編譯安裝

運(yùn)行setup-utils目錄下的install-mxnet-osx.sh腳本,中間要編譯些東西锉罐,要多等會(huì)帆竹,再輸入個(gè)密碼,就自動(dòng)編譯安裝完成啦脓规。

注意一下:

1.因?yàn)橐x取make目錄下的文件栽连,所以這里要在MXnet源碼的根目錄執(zhí)行安裝腳本~

比如在mxnet的源碼根目錄執(zhí)行

  1. sh ./setup-utils/install-mxnet-osx.sh

2.以后運(yùn)行腳本可能需要一些python模塊,建議安裝下pip

mac下安裝的方法也很簡(jiǎn)單: sudo easy_install pip

0x02 樣例運(yùn)行

我們可以試著運(yùn)行下MXnet自帶的一些樣例侨舆,這里我們?cè)囅翹eural art這個(gè)樣例

Neural art是個(gè)讓機(jī)器模仿已有畫(huà)作的繪畫(huà)風(fēng)格來(lái)把一張照片重新繪畫(huà)的算法升酣。

比如我們輸入?最終生成?

1.首先打開(kāi)example/neural-style目錄,大部分樣例都是有README的态罪,大家在運(yùn)行之前可以先看看

這個(gè)樣例的README有說(shuō)

First use?download.shto download pre-trained model and sample inputs

Then run?python nstyle.py, use?-h?to see more options

那我們就要運(yùn)行這個(gè)目錄下的download.sh

腳本會(huì)自動(dòng)下載訓(xùn)練模型vgg19.params到Model目錄,輸入的素材到input目錄

2.運(yùn)行Demo

因?yàn)槲覀冞\(yùn)行的是CPU版下面,所以要這么輸入

  1. python nstyle.py --gpu -1 --max-num-epochs 150 --output_dir ~/Desktop/

--gpu:使用哪個(gè)一個(gè)GPU,-1代表使用CPU

--max-num-epochs:最大迭代次數(shù)复颈,這里我們迭代150次

--output_dir:結(jié)果輸出路徑

可能大家一次運(yùn)行不起來(lái),會(huì)出現(xiàn)No module named for xxx的提示,一般是相應(yīng)的python模塊沒(méi)有安裝耗啦,在google搜下No module named for xxx一般都能找到安裝方法凿菩,大部分都能通過(guò)pip安裝~

運(yùn)行結(jié)果

我們看下不同迭代次數(shù)時(shí)的結(jié)果是什么樣的

10次:??50次:??100次:??150次:??可以看出迭代次數(shù)越多效果越好~當(dāng)然由于深度學(xué)習(xí)是有很多層神經(jīng)網(wǎng)絡(luò)組成,需要的運(yùn)算量巨大帜讲,使用CPU即使是i7衅谷,150次迭代也需要好幾十分鐘了,有條件的看官可以嘗試使用GPU版似将,可以將時(shí)間縮短到幾分鐘获黔,甚至在云平臺(tái)上跑。

樣例的具體原理可以參考參考附錄的第二個(gè)鏈接在验。

參考附錄:

http://www.leiphone.com/news/201608/wh8osGY4vg28XlvM.html http://phunter.farbox.com/post/mxnet-tutorial2 https://zhuanlan.zhihu.com/p/20634163 http://www.cnblogs.com/peizhe123/p/4641149.html

直播推薦:


題圖:pexels玷氏,CC0 授權(quán)。

點(diǎn)擊閱讀原文腋舌,查看更多 Python 教程和資源盏触。


閱讀原文:http://mp.weixin.qq.com/s?__biz=MzAwNDc0MTUxMw==&mid=2649640089&idx=1&sn=e0d5cc3be458f7398f4bfefef5934b18&scene=0#wechat_redirect
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市块饺,隨后出現(xiàn)的幾起案子赞辩,更是在濱河造成了極大的恐慌,老刑警劉巖授艰,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辨嗽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡想诅,警方通過(guò)查閱死者的電腦和手機(jī)召庞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)来破,“玉大人篮灼,你說(shuō)我怎么就攤上這事∨墙” “怎么了诅诱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)送朱。 經(jīng)常有香客問(wèn)我娘荡,道長(zhǎng),這世上最難降的妖魔是什么驶沼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任炮沐,我火速辦了婚禮,結(jié)果婚禮上回怜,老公的妹妹穿的比我還像新娘大年。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布翔试。 她就那樣靜靜地躺著轻要,像睡著了一般。 火紅的嫁衣襯著肌膚如雪垦缅。 梳的紋絲不亂的頭發(fā)上冲泥,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音壁涎,去河邊找鬼凡恍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛粹庞,可吹牛的內(nèi)容都是我干的咳焚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼庞溜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼革半!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起流码,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤又官,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后漫试,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體六敬,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年驾荣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了外构。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡播掷,死狀恐怖审编,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情歧匈,我是刑警寧澤垒酬,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站件炉,受9級(jí)特大地震影響勘究,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜斟冕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一口糕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧磕蛇,春花似錦走净、人聲如沸券时。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至捌袜,卻和暖如春说搅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虏等。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工弄唧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人霍衫。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓候引,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親敦跌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子澄干,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容