干货 :六招教你用Python分分钟构建好玩的深度学习应用
[導(dǎo)讀]深度學(xué)習(xí)是近來數(shù)據(jù)科學(xué)中研究和討論最多的話題。得益于深度學(xué)習(xí)的發(fā)展,數(shù)據(jù)科學(xué)在近期得到了重大突破,深度學(xué)習(xí)也因此得到了很多關(guān)注。據(jù)預(yù)測(cè),在不久的將來,更多的深度學(xué)習(xí)應(yīng)用程序會(huì)影響人們的生活。實(shí)際上,我認(rèn)為這種影響已經(jīng)開始了。
如果你站在圈外的角度,深度學(xué)習(xí)可能看起來讓人望而生畏。 像TensorFlow,Keras,基于GPU的計(jì)算等專業(yè)術(shù)語可能會(huì)嚇到你。 但是,悄悄告訴你 –?深度學(xué)習(xí)并不難! 緊追前沿的深度學(xué)習(xí)技術(shù)的確需要花費(fèi)時(shí)間和精力,但應(yīng)用它們解決日常生活中的問題還是很容易的。
有趣的是,在我應(yīng)用深度學(xué)習(xí)技術(shù)的過程中,我重拾了孩童時(shí)期的樂趣和好奇心。在這篇文章里,我將介紹6個(gè)這樣的應(yīng)用。它們開始的時(shí)候看起來很難實(shí)現(xiàn),但是如果利用深度學(xué)習(xí),問題就可以在一個(gè)小時(shí)內(nèi)迎刃而解。本文展示了一些具有突破性價(jià)值的成果,并向你介紹它們是如何運(yùn)作的。
目錄
1.使用現(xiàn)有API的應(yīng)用程序
-
深度學(xué)習(xí)API的優(yōu)缺點(diǎn)
-
利用深度學(xué)習(xí)為照片著色(使用Algorithmia 開發(fā)的API)
-
使用Watson API構(gòu)建聊天機(jī)器人
-
基于情感分析的新聞聚合器(使用Aylien 開發(fā)的API)
2.開源應(yīng)用程序
-
開源代碼的優(yōu)缺點(diǎn)
-
利用深度學(xué)習(xí)進(jìn)行語句校正
-
利用深度學(xué)習(xí)進(jìn)行男女肖像轉(zhuǎn)換
-
開發(fā)深度強(qiáng)化學(xué)習(xí)機(jī)器人來玩Flappy Bird這款游戲
3.其他有價(jià)值的資源
1.使用現(xiàn)有API的應(yīng)用程序
API不過是一種運(yùn)行在遠(yuǎn)端PC的程序。可以在本地通過互聯(lián)網(wǎng)遠(yuǎn)程連接。例如,即使你的電腦里已經(jīng)內(nèi)置了揚(yáng)聲器,你仍可以再插入一個(gè)藍(lán)牙。這樣,利用筆記本電腦就可以遠(yuǎn)程訪問揚(yáng)聲器。
API 的概念類似于有人已經(jīng)幫你實(shí)現(xiàn)了較難的那部分工作。你可以用它來快速解決手上的問題。
我將列出一些使用API構(gòu)建應(yīng)用程序的優(yōu)缺點(diǎn)。
?
1.1.1深度學(xué)習(xí)API的優(yōu)點(diǎn)
-
深度學(xué)習(xí)應(yīng)用程序通常對(duì)GPU計(jì)算能力和數(shù)據(jù)存儲(chǔ)/處理性能有較高要求。因此,你可以創(chuàng)建自己的工作站(或使用任意云服務(wù)),并在本地使用任意系統(tǒng)來訪問工作站并運(yùn)行應(yīng)用程序。
-
本地系統(tǒng)不受計(jì)算負(fù)擔(dān)影響。
-
輕松集成新功能。
?
1.1.2深度學(xué)習(xí)API的缺點(diǎn)
-
構(gòu)建API的成本很大。開發(fā)和維護(hù)一個(gè)API需要投入時(shí)間和資源,這多少有點(diǎn)沉悶乏味。
-
容易受到互聯(lián)網(wǎng)連接的限制。任何時(shí)刻的連接失敗都會(huì)導(dǎo)致整個(gè)系統(tǒng)的中斷。
-
如果任何人可以輕松連接你的應(yīng)用,它將暴露安全問題。你必須設(shè)置額外的安全層,例如設(shè)置用戶名和密碼,并限制在一段時(shí)間內(nèi)可以訪問的次數(shù)。
?
讓我們開始吧!
1.2使用深度學(xué)習(xí)(Algorithmia API)為照片著色
自動(dòng)著色一直是計(jì)算機(jī)視覺社區(qū)中的熱門話題。從一張黑白圖片獲得一張彩色照片似乎是件超現(xiàn)實(shí)的事。想象一個(gè)4歲的孩子拿著蠟筆全神貫注于涂鴉本的場(chǎng)景,我們是否能教會(huì)人工智能同樣去做這件事情呢?
這是當(dāng)然一個(gè)難題。人類在觀察事物顏色的過程中得到了經(jīng)年累月的訓(xùn)練,我們自己可能不會(huì)注意到,但是我們的大腦在捕捉生活的每一刻,并從中提取有意義的信息,如天空是藍(lán)的、草是綠的。這很難在人工智能體中建模。
近期的一項(xiàng)研究表明,如果我們基于大量準(zhǔn)備好的數(shù)據(jù)集,對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行足夠的訓(xùn)練,就能夠從灰度圖像中幻化出顏色的模型。下面是一個(gè)圖像著色器的示例:?
為了實(shí)現(xiàn)這一點(diǎn),我們使用由Algorithmia開發(fā)的API。
?
規(guī)格要求:
-
Python(2或3)
-
網(wǎng)絡(luò)連接(用于調(diào)用API端點(diǎn))
-
12個(gè)積分(積分需要支付獲得,不過注冊(cè)Algorithmia可免費(fèi)獲贈(zèng)5000積分)
步驟1:在Algorithmia上注冊(cè)并獲取您自己的API密鑰。 你可以在個(gè)人資料中找到API密鑰。
pip install algorithmia步驟2:輸入pip語句安裝Algorithmia。
步驟3:選擇要著色的照片,并將其上傳到algorithmia提供的Data文件夾中。
?
步驟4:在本地創(chuàng)建一個(gè)文件,命名為trial1.py。 打開它,并寫如下代碼。注意需要輸入你的圖像在data文件夾中的路徑,還有你的API密鑰.
import Algorithmiainput = { "image": "data:// … " # Set location of your own image }client = Algorithmia.client(‘…’) #insert your own API keyalgo = client.algo('deeplearning/ColorfulImageColorization/1.1.5')print algo.pipe(input)步驟5:打開命令提示符并輸入“python trial1.py”運(yùn)行剛才的代碼。 輸出的結(jié)果將自動(dòng)保存在數(shù)據(jù)文件夾中。這是我得到的:
就是這樣 - 你剛剛創(chuàng)建了一個(gè)簡(jiǎn)單的應(yīng)用程序,它就像個(gè)孩子,可以填充圖像中的顏色!容我自high一下:一顆賽艇!
?
1.3構(gòu)建聊天機(jī)器人(Watson API)
Watson是一個(gè)展現(xiàn)人工智能的杰出例子。你可能聽說過Watson在一個(gè)問答游戲中戰(zhàn)勝人類的故事。 Watson集合了許多技術(shù),深度學(xué)習(xí)是其學(xué)習(xí)過程的核心部分,特別是在自然語言處理方面。在此,我們將使用Wastson眾多應(yīng)用中的一個(gè)來構(gòu)建對(duì)話服務(wù)。也就是聊天機(jī)器人。聊天機(jī)器人是一個(gè)能像人一樣回答常見問題的智能體。它可以很好地與客戶交流并作出及時(shí)回復(fù)。
?
這里有一個(gè)演示平臺(tái):
要求和規(guī)格:
-
Python(2或3)
-
網(wǎng)絡(luò)連接(用于調(diào)用API端點(diǎn))
-
激活的Bluemix帳戶(試用期為30天)
?
讓我們來看看如何用Watson一步步構(gòu)建簡(jiǎn)單的聊天機(jī)器人。
?
步驟1:在Bluemix上注冊(cè)并激活保護(hù)服務(wù)以獲取憑據(jù)
步驟2:打開terminal界面,運(yùn)行命令如下:
pip install requests responses pip install --upgrade watson-developer-cloud步驟3:創(chuàng)建一個(gè)文件trial.py并復(fù)制以下代碼。記住加入個(gè)人憑據(jù)。
?
import json from watson_developer_cloud import ConversationV1conversation = ConversationV1( username='YOUR SERVICE USERNAME', password='YOUR SERVICE PASSWORD', version='2016-09-20')# replace with your own workspace_id workspace_id = 'YOUR WORKSPACE ID'response = conversation.message(workspace_id=workspace_id, message_input={ 'text': 'What\'s the weather like?'}) print(json.dumps(response, indent=2))步驟4:保存文件并在控制臺(tái)中輸入“python trial.py”運(yùn)行程序。你可以在控制臺(tái)中得到Watson對(duì)輸入信息的輸出響應(yīng)。
輸入:顯示附近的內(nèi)容。
輸出:我明白你想要我找到一個(gè)便利設(shè)施。我可以在附近找到餐廳,加油站和洗手間。
如果你想構(gòu)建一個(gè)包含動(dòng)態(tài)汽車儀表盤(如上面gif所示)的完整對(duì)話服務(wù)項(xiàng)目。查看這個(gè)github存儲(chǔ)庫。
幾分鐘就能實(shí)現(xiàn)聊天機(jī)器人和著色應(yīng)用,不錯(cuò)~
?
1.4基于情緒分析的新聞聚合器(Aylien API)
有時(shí)我們只想看到世界上的美好事物。如果讀報(bào)紙的時(shí)候,只看到“好”消息,過濾掉所有壞消息,這將是多么酷的一件事。
使用先進(jìn)的自然語言處理技術(shù)(其中之一是深度學(xué)習(xí))使得一切成為可能。你現(xiàn)在可以根據(jù)情緒分析文本對(duì)新聞進(jìn)行過濾,并將其呈現(xiàn)給讀者。
采用Aylien的新聞API可以實(shí)現(xiàn)這一功能。下面是演示的截圖。你可以構(gòu)建自定義查詢,并檢查結(jié)果。
讓我們看看在python中的實(shí)現(xiàn)。
要求和規(guī)格:
-
Python(2或3)
-
網(wǎng)絡(luò)連接(用于訪問API端點(diǎn))
?
步驟1:在Aylien網(wǎng)站上注冊(cè)一個(gè)帳戶。
步驟2:登錄時(shí)從個(gè)人資料中獲取API_key和App_ID。
步驟3:進(jìn)入terminal界面輸入下面的語句,安裝Aylien新聞API。
pip install aylien_news_api步驟4:創(chuàng)建一個(gè)文件“trial.py”并復(fù)制以下代碼。
import aylien_news_api from aylien_news_api.rest import ApiException# Configure API key authorization: app_id aylien_news_api.configuration.api_key['X-AYLIEN-NewsAPI-Application-ID'] = ' 3f3660e6' # Configure API key authorization: app_key aylien_news_api.configuration.api_key['X-AYLIEN-NewsAPI-Application-Key'] = ' ecd21528850dc3e75a47f53960c839b0'# create an instance of the API class api_instance = aylien_news_api.DefaultApi()opts = {'title': 'trump','sort_by': 'social_shares_count.facebook','language': ['en'],'published_at_start': 'NOW-7DAYS','published_at_end': 'NOW','entities_body_links_dbpedia': ['http://dbpedia.org/resource/Donald_Trump','http://dbpedia.org/resource/Hillary_Rodham_Clinton'] }try:# List storiesapi_response = api_instance.list_stories(**opts)print(api_response) except ApiException as e:print("Exception when calling DefaultApi->list_stories: %s\n" % e)步驟5:保存文件并通過鍵入“python trial.py”開啟運(yùn)行。輸出將是如下所示的jason?dump:
{'clusters': [], 'next_page_cursor': 'AoJbuB0uU3RvcnkgMzQwNzE5NTc=', 'stories': [{'author': {'avatar_url': None, 'id': 56374, 'name': ''}, 'body': 'President Donald Trump agreed to meet alliance leaders in Europe in May in a phone call on Sunday with NATO Secretary General Jens Stoltenberg that also touched on the separatist conflict in eastern Ukraine, the White House said.', 'categories': [{'confident': True, 'id': 'IAB20-13', 'level': 2, 'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB20-13', 'parent': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB20'}, 'score': 0.3734071532595844, 'taxonomy': 'iab-qag'}, {'confident': False, 'id': 'IAB11-3', 'level': 2, 'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB11-3', 'parent': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB11'}, 'score': 0.2898707860282879, 'taxonomy': 'iab-qag'}, {'confident': False, 'id': 'IAB10-5', 'level': 2, 'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB10-5', 'parent': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB10'}, 'score': 0.24747867463774773, 'taxonomy': 'iab-qag'}, {'confident': False, 'id': 'IAB25-5', 'level': 2, 'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB25-5', 'parent': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB25'}, 'score': 0.22760056625597547, 'taxonomy': 'iab-qag'}, {'confident': False, 'id': 'IAB20', 'level': 1, 'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB20', 'parent': None}, 'score': 0.07238470020202414, 'taxonomy': 'iab-qag'}, {'confident': False, 'id': 'IAB10', 'level': 1, 'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB10', 'parent': None}, 'score': 0.06574918306158796, 'taxonomy': 'iab-qag'}, {'confident': False, 'id': 'IAB25', ...哇!我可以做一個(gè)根據(jù)興趣篩選新聞的對(duì)話應(yīng)用程序了!我相信,現(xiàn)在你對(duì)深度學(xué)習(xí)感到很興奮!
2.開源應(yīng)用程序
現(xiàn)階段,對(duì)研究社區(qū)起最大幫助的是開源思維。研究人員分享他們?nèi)〉玫某晒?#xff0c;深度學(xué)習(xí)也因此得到了跨越式發(fā)展。這里我涉及了一些開源成果,它們都是從從研究論文中轉(zhuǎn)變過來的。
?
2.1.1開源應(yīng)用的優(yōu)點(diǎn)
-
由于應(yīng)用程序是開源的,你可以查看應(yīng)用程序的任何細(xì)節(jié),并且如果需要,還可以輕松自定義。
?
-
來自不同組織、擁有不同經(jīng)驗(yàn)的開發(fā)人員會(huì)在應(yīng)用程序中協(xié)作。這使得應(yīng)用程序比原始版本更好。此外,因?yàn)楹芏嗳硕伎梢允褂?#xff0c;所以這個(gè)應(yīng)用程序可以不斷地進(jìn)行測(cè)試,更方便地被使用。
?
2.1.2開源應(yīng)用程序的缺點(diǎn)
-
因?yàn)闆]有組織從背后支持,開源項(xiàng)目中往往缺少“責(zé)任意識(shí)”,如果發(fā)生問題也不知道該責(zé)問誰。
?
-
還有明顯的許可問題,許多公司都不愿將他們的項(xiàng)目“公開”。
注意:對(duì)于開源應(yīng)用程序,我建議你瀏覽一遍官方的存儲(chǔ)庫。因?yàn)楹芏囗?xiàng)目仍處于初級(jí)階段,可能會(huì)因?yàn)槲粗脑蚨袛唷?/p>
讓我們來看一些開源應(yīng)用程序!
?
2.2利用深度學(xué)習(xí)進(jìn)行語句校正
現(xiàn)在的系統(tǒng)可以輕松檢測(cè)和糾正拼寫錯(cuò)誤,但糾正語法錯(cuò)誤有點(diǎn)困難。為了提升這一能力,我們可以使用深度學(xué)習(xí)。這個(gè)存儲(chǔ)庫是特意為此設(shè)置的。
我整理一下……
這里我們使用一個(gè)語料庫來訓(xùn)練序列預(yù)測(cè)神經(jīng)網(wǎng)絡(luò),該語料庫包含一系列語法錯(cuò)誤的句子以及它的更正結(jié)果。
訓(xùn)練模型為語句的矯正提供了正確答案。下面是一個(gè)例子:
?
輸入:‘Kvothe went to market’
輸出:‘Kvothe went to the market’
你可以在網(wǎng)站上查看演示:http://atpaino.com/dtc.html
?
該模型仍然無法校正所有的句子,但隨著更多的訓(xùn)練數(shù)據(jù)和高效的深度學(xué)習(xí)算法,結(jié)果會(huì)越來越好。
?
要求:
-
Python(2或3)
-
GPU(可選用于更快的訓(xùn)練)
?
步驟1:從官網(wǎng)上安裝tensorflow。另外,從GitHub下載存儲(chǔ)庫,并從https://github.com/atpaino/deep-text-corrector保存到本地。
?
步驟2:下載數(shù)據(jù)集(Cornell Movie-Dialogs Corpus),并將其解壓到工作目錄中
?
?
步驟3:通過運(yùn)行命令創(chuàng)建訓(xùn)練數(shù)據(jù)
python preprocessors/preprocess_movie_dialogs.py --raw_data movie_lines.txt \--out_file preprocessed_movie_lines.txt并創(chuàng)建訓(xùn)練,驗(yàn)證和測(cè)試文件,并將其保存在當(dāng)前工作目錄中
?
步驟4:現(xiàn)在訓(xùn)練深度學(xué)習(xí)模型:
python correct_text.py --train_path /movie_dialog_train.txt \--val_path /movie_dialog_val.txt \--config DefaultMovieDialogConfig \--data_reader_type MovieDialogReader \--model_path /movie_dialog_model步驟5:該模型需要一些時(shí)間來訓(xùn)練。訓(xùn)練完成后,可以通過以下方式進(jìn)行測(cè)試:
python correct_text.py --test_path /movie_dialog_test.txt \--config DefaultMovieDialogConfig \--data_reader_type MovieDialogReader \--model_path /movie_dialog_model \--decode2.3利用深度學(xué)習(xí)進(jìn)行男女肖像轉(zhuǎn)換
在談到該應(yīng)用程序之前,請(qǐng)觀察以下結(jié)果:
這里第二張圖片是第一張圖片通過深度學(xué)習(xí)得到的!這個(gè)有趣的應(yīng)用程序表明深度學(xué)習(xí)無所不能!該應(yīng)用程序的核心在于GAN(生成對(duì)抗網(wǎng)絡(luò)),這種類型的深度學(xué)習(xí)能夠本中生成新樣本。
?
要求:
-
Python(3.5+)
-
Tensorflow(r0.12 +)
-
GPU(可選用于更快捷的訓(xùn)練)
操作之前給你提個(gè)醒,如果不使用GPU,模型訓(xùn)練需要花很長(zhǎng)的時(shí)間。即使使用高端GPU(Nvidia GeForce GTX 1080),一個(gè)圖像的訓(xùn)練也需2小時(shí)。
?
步驟1:下載存儲(chǔ)庫并在本地解壓縮https://github.com/david-gpu/deep-makeover
?
步驟2:從CelebA數(shù)據(jù)集下載“Align&Cropped Images”。創(chuàng)建數(shù)據(jù)集文件夾,并命名為“dataset”,并把所有圖片解壓到其中。
?
步驟3:通過以下方式訓(xùn)練模型:
python3 dm_main.py --run train然后通過傳遞想要轉(zhuǎn)換的圖像進(jìn)行測(cè)試
python3 dm_main.py --run inference image.jpg2.4搭建深度強(qiáng)化學(xué)習(xí)機(jī)器人來玩Flappy Bird這款游戲
你可能玩過Flappy Bird這款游戲。對(duì)于不知道這個(gè)游戲的人來說,這款A(yù)ndroid游戲很讓人上癮。在游戲里,玩家需要避開障礙,讓小鳥一直在空中飛翔。
在這個(gè)應(yīng)用中,這個(gè)飛鳥機(jī)器人就是利用強(qiáng)化學(xué)習(xí)技術(shù)創(chuàng)造的。這下面是一個(gè)訓(xùn)練好的機(jī)器人演示。
要求:
-
Python(2或3)
-
Tensorflow(0.7+)
-
Pygame
-
Opencv-python
實(shí)現(xiàn)這個(gè)應(yīng)用很容易,因?yàn)槎鄶?shù)的基本要素都已經(jīng)包含其中?
?
步驟1:下載官方存儲(chǔ)庫。
?
步驟2:確保已安裝所有依賴項(xiàng)。一旦準(zhǔn)備完成,運(yùn)行如下命令。
python deep_q_network.py4.其他值得一提的資源
本文只是涉及了深度學(xué)習(xí)模型強(qiáng)大能力的皮毛。每天都有大量論文發(fā)表,帶來大批像這樣的應(yīng)用。關(guān)鍵是誰能最先提出想法
?
我還列了一些其他值得一看的資源。
-
A compilation of deep learning applications by Károly Zsolnai-Fehér
-
Neural Artistic Style
-
Building a toy self-driving car bot on?Mario Kart.
-
9 Cool Deep Learning Applications | Two Minute Papers
-
10 More Cool Deep Learning Applications | Two Minute Papers
-
10 Even Cooler Deep Learning Applications | Two Minute Papers
-
List of?Deep Learning Startups
-
List of awesome?Deep Learning Projects
?
結(jié)語
希望你在閱讀這篇文章的過程中找到樂趣。這些應(yīng)用程序絕對(duì)會(huì)讓你感到震撼。有的人可能已經(jīng)了解這些應(yīng)用,有的人還沒有。如果你參與過這些應(yīng)用程序的開發(fā),請(qǐng)分享你的經(jīng)驗(yàn)。我們會(huì)拭目以待。
原文發(fā)布時(shí)間為:2017-03-04
本文作者:盧苗苗、朱煜奇
本文來自云棲社區(qū)合作伙伴“數(shù)據(jù)派THU”,了解相關(guān)信息可以關(guān)注“數(shù)據(jù)派THU”微信公眾號(hào)
總結(jié)
以上是生活随笔為你收集整理的干货 :六招教你用Python分分钟构建好玩的深度学习应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荣耀30会更新鸿蒙系统吗,华为荣耀30肿
- 下一篇: 邮件发送时间怎么修改 python_使用