- 深度學(xué)習(xí)訓(xùn)練營(yíng) 21天實(shí)戰(zhàn)TensorFlow+Keras+scikit-learn
- 張強(qiáng)
- 3165字
- 2020-04-14 15:04:07
前言
當(dāng)下我們的生活和工作已經(jīng)被人工智能和深度學(xué)習(xí)的技術(shù)所包圍,例如人機(jī)對(duì)話(huà)、人臉識(shí)別過(guò)閘機(jī)或付款、各種語(yǔ)言間的自動(dòng)翻譯、自動(dòng)駕駛汽車(chē)、淘寶的個(gè)性化推薦等,各大科技公司都在努力發(fā)展的“千人千面”精細(xì)化產(chǎn)品也離不開(kāi)人工智能(它背后的技術(shù)就是深度學(xué)習(xí))。
坦白來(lái)講,深度學(xué)習(xí)就是對(duì)深度神經(jīng)網(wǎng)絡(luò)架構(gòu)的學(xué)習(xí),基于神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)出各種架構(gòu)的模型,如卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)、生成對(duì)抗網(wǎng)絡(luò)(GAN)等。每一種神經(jīng)網(wǎng)絡(luò)在不同的領(lǐng)域起著不同的作用,例如在圖像識(shí)別領(lǐng)域的人臉識(shí)別一般使用CNN;語(yǔ)言翻譯或一些需要有記憶狀態(tài)的領(lǐng)域一般用RNN或者LSTM;需要使用神經(jīng)網(wǎng)絡(luò)模型生成各種圖像和視頻的領(lǐng)域就可以用GAN。
自從Google公司開(kāi)源了TensorFlow深度學(xué)習(xí)框架后,深度學(xué)習(xí)這門(mén)技術(shù)成為廣大開(kāi)發(fā)者、科研人員和企業(yè)最實(shí)用的技術(shù);之后不久,基于TensorFlow深度學(xué)習(xí)框架編寫(xiě)而成的Keras深度學(xué)習(xí)框架就誕生了,Keras使得編寫(xiě)神經(jīng)網(wǎng)絡(luò)模型更簡(jiǎn)單、更易理解、更高效,只需幾行代碼就可以完成一個(gè)CNN模型。Keras有著快速編寫(xiě)神經(jīng)網(wǎng)絡(luò)模型的原型的稱(chēng)號(hào),其后端之一就是TensorFlow。對(duì)這兩個(gè)框架的掌握,現(xiàn)在基本已成為各大公司對(duì)深度學(xué)習(xí)工程師的招聘要求的標(biāo)配。
本書(shū)特色
本書(shū)內(nèi)容以實(shí)踐、應(yīng)用為導(dǎo)向,以實(shí)際編寫(xiě)代碼和運(yùn)行通過(guò)為準(zhǔn)則,無(wú)須求解方程,無(wú)須理解復(fù)雜的公式。本書(shū)以項(xiàng)目編碼實(shí)踐為主,無(wú)方程公式的理論知識(shí),只求讀者能又快又準(zhǔn)地運(yùn)行代碼并看到模型最終效果,在僅配置普通CPU的計(jì)算機(jī)上也能訓(xùn)練模型和完成所有的項(xiàng)目實(shí)踐。
本書(shū)介紹的21個(gè)項(xiàng)目選取了目前比較流行的應(yīng)用案例,為讀者呈現(xiàn)生動(dòng)有趣的實(shí)踐應(yīng)用。當(dāng)初學(xué)者掌握了一定的統(tǒng)計(jì)學(xué)知識(shí)后,亟需的就是神經(jīng)網(wǎng)絡(luò)模型的項(xiàng)目編寫(xiě)練習(xí),此時(shí)學(xué)習(xí)本書(shū)再適合不過(guò)了。
本書(shū)內(nèi)容分為三大類(lèi),分別是預(yù)測(cè)類(lèi)、識(shí)別類(lèi)和生成類(lèi),各部分內(nèi)容中均有從淺入深的項(xiàng)目案例。每個(gè)項(xiàng)目的每一行代碼,都是筆者實(shí)際運(yùn)行通過(guò)的。有的地方代碼過(guò)多,我已將之寫(xiě)到了Python腳本文件中,讀者需要下載相關(guān)腳本文件,引入后再運(yùn)行。每個(gè)神經(jīng)網(wǎng)絡(luò)模型的每一層都有激活函數(shù)和損失函數(shù),在隱藏層時(shí)用以調(diào)節(jié)權(quán)重和誤差,在輸出層時(shí)用以計(jì)算概率。
本書(shū)內(nèi)容及體系結(jié)構(gòu)
第1章 房?jī)r(jià)預(yù)測(cè)
本章通過(guò)對(duì)波士頓和北京的房?jī)r(jià)進(jìn)行分析和預(yù)測(cè),講解如何使用scikit-learn(sklearn)進(jìn)行網(wǎng)格搜索來(lái)訓(xùn)練和預(yù)測(cè),以及如何使用Keras構(gòu)建神經(jīng)網(wǎng)絡(luò)模型來(lái)訓(xùn)練、評(píng)估和預(yù)測(cè)。
第2章 泰坦尼克號(hào)生還預(yù)測(cè)
本章通過(guò)對(duì)泰坦尼克號(hào)的船上乘員的人數(shù)情況進(jìn)行數(shù)據(jù)清洗與分割,講解如何使用決策樹(shù)、邏輯回歸、梯度提升分類(lèi)器、神經(jīng)網(wǎng)絡(luò)模型來(lái)構(gòu)建、訓(xùn)練、評(píng)估和預(yù)測(cè)模型。
第3章 共享單車(chē)使用情況預(yù)測(cè)
本章將根據(jù)Capital Bikeshare共享單車(chē)公司的用戶(hù)騎行數(shù)據(jù)繪制多種圖表來(lái)進(jìn)行呈現(xiàn)、分析和總結(jié),最終編寫(xiě)一個(gè)基于TensorFlow的長(zhǎng)短期記憶網(wǎng)絡(luò)模型來(lái)講解如何進(jìn)行預(yù)測(cè)。
第4章 福彩3D中獎(jiǎng)?lì)A(yù)測(cè)
本章通過(guò)分析從福彩開(kāi)獎(jiǎng)的網(wǎng)站上獲取的從2004年10月到2018年7月的3D中獎(jiǎng)數(shù)據(jù)(讀者也可以自行獲取更多的數(shù)據(jù)),構(gòu)建基于Keras的時(shí)間序列和多層感知器模型來(lái)講解如何進(jìn)行中獎(jiǎng)?lì)A(yù)測(cè)。
第5章 股票走勢(shì)預(yù)測(cè)
本章主要是通過(guò)從美國(guó)納斯達(dá)克股票交易市場(chǎng)獲取的百度和微軟的股票價(jià)格走勢(shì)數(shù)據(jù),對(duì)從上市開(kāi)始到2018年的股票收盤(pán)價(jià)格數(shù)據(jù)進(jìn)行觀察和分析,假定購(gòu)買(mǎi)策略,構(gòu)建Prophet模型來(lái)講解如何進(jìn)行預(yù)測(cè)。
第6章 垃圾郵件預(yù)測(cè)
本章通過(guò)判定給定的郵件是否是垃圾郵件來(lái)進(jìn)行分析,然后構(gòu)建多項(xiàng)式樸素貝葉斯模型和多層感知器模型來(lái)講解如何預(yù)測(cè)郵件是否是垃圾郵件。
第7章 影評(píng)的情感分析
本章通過(guò)分析和預(yù)測(cè)給定的電影評(píng)論是正面的還是負(fù)面的,講解如何基于TensorFlow和Keras構(gòu)建長(zhǎng)短期記憶網(wǎng)絡(luò)模型來(lái)分析影評(píng)是正面的或者負(fù)面的。
第8章 語(yǔ)言翻譯
本章通過(guò)從網(wǎng)上下載的英文和法文的平行語(yǔ)料庫(kù)來(lái)進(jìn)行機(jī)器翻譯,講解如何基于Keras的長(zhǎng)短期記憶網(wǎng)絡(luò)構(gòu)建從法文到英文的語(yǔ)言神經(jīng)機(jī)器翻譯引擎。
第9章 MNIST手寫(xiě)數(shù)字識(shí)別
本章將介紹如何識(shí)別開(kāi)源的MNIST手寫(xiě)數(shù)字?jǐn)?shù)據(jù)庫(kù)的圖像,并基于TensorFlow和Keras構(gòu)建多層感知器和卷積神經(jīng)網(wǎng)絡(luò)模型,講解如何進(jìn)行訓(xùn)練、評(píng)估和識(shí)別。
第10章 狗的品種識(shí)別
本章將介紹通過(guò)由120個(gè)品種的狗的圖像數(shù)據(jù)庫(kù)構(gòu)建的數(shù)據(jù)集進(jìn)行圖像基本分析,然后構(gòu)建Keras的卷積神經(jīng)網(wǎng)絡(luò)識(shí)別模型,再構(gòu)建基于InceptionV3預(yù)訓(xùn)練模型的遷移學(xué)習(xí)技術(shù)來(lái)講解如何進(jìn)行訓(xùn)練、評(píng)估和識(shí)別。
第11章 人臉識(shí)別
本章通過(guò)提供的LFW人臉圖像數(shù)據(jù)集,進(jìn)行圖像中的人臉對(duì)齊,然后訓(xùn)練模型、預(yù)測(cè)模型,還講解了如何使用流行的開(kāi)源庫(kù)FaceNet和FaceRecognition來(lái)進(jìn)行實(shí)時(shí)的人臉識(shí)別。
第12章 人臉面部表情識(shí)別
本章將講解如何使用fer2013的數(shù)據(jù)集構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)模型來(lái)進(jìn)行人臉面部表情識(shí)別。首先是對(duì)單張圖片中的人臉面部表情進(jìn)行識(shí)別,然后再對(duì)視頻中的人臉面部表情進(jìn)行識(shí)別,最后通過(guò)開(kāi)啟攝像頭實(shí)時(shí)識(shí)別拍攝到的人臉面部表情。
第13章 人體姿態(tài)識(shí)別
本章將介紹OpenPose開(kāi)源庫(kù),它是由CMU計(jì)算機(jī)感知實(shí)驗(yàn)室研發(fā)并開(kāi)源的。我們將依據(jù)OpenPose開(kāi)源庫(kù)基于TensorFlow和Keras的實(shí)現(xiàn)版本,對(duì)單張圖片、視頻和攝像頭拍攝到的畫(huà)面進(jìn)行人體姿態(tài)識(shí)別。
第14章 皮膚癌分類(lèi)
本章將講解如何通過(guò)ISIC2017:Skin Lesion Analysis提供的3種皮膚癌癥的圖像數(shù)據(jù)集進(jìn)行構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)模型的分類(lèi)和預(yù)測(cè),基于TensorFlow的遷移學(xué)習(xí)技術(shù)和Keras的CNN模型進(jìn)行識(shí)別。
第15章 對(duì)象檢測(cè)
本章將講解如何使用Mask R-CNN Inception COCO、Faster R-CNN Inception COCO和SSD MobileNet COCO,對(duì)COCO圖像數(shù)據(jù)集里實(shí)時(shí)拍攝的畫(huà)面中的對(duì)象進(jìn)行識(shí)別。
第16章 看圖說(shuō)話(huà)
本章將講解如何通過(guò)MSCOCO圖像數(shù)據(jù)集,使每張圖像都有對(duì)應(yīng)的圖像文本描述,使用Show and Tell模型來(lái)實(shí)現(xiàn)模型的構(gòu)建,生成TFRecords圖像格式數(shù)據(jù),訓(xùn)練、評(píng)估和測(cè)試模型。
第17章 生成電視劇劇本
本章講解如何使用The Simpsons劇本的某一個(gè)片段作為訓(xùn)練數(shù)據(jù)集,通過(guò)TensorFlow構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(luò)和Textgenrnn來(lái)實(shí)現(xiàn)電視劇劇本的生成。
第18章 風(fēng)格遷移
本章將講解如何通過(guò)給定的大師畫(huà)作和自己提供的圖片來(lái)構(gòu)建TensorFlow和Keras的神經(jīng)網(wǎng)絡(luò)模型,把大師的畫(huà)作風(fēng)格遷移到指定的圖片上。
第19章 生成人臉
本章將講解如何使用TensorFlow構(gòu)建生成對(duì)抗網(wǎng)絡(luò)模型,先用于簡(jiǎn)單的MNIST手寫(xiě)數(shù)字圖像識(shí)別,然后實(shí)現(xiàn)基于LFW人臉圖像數(shù)據(jù)集的人臉生成。
第20章 圖像超分辨率
本章將講解如何使用LFW人臉圖像數(shù)據(jù)集和srez開(kāi)源庫(kù)構(gòu)建深度對(duì)抗生成網(wǎng)絡(luò)模型,訓(xùn)練和生成高度清晰的圖像(放大圖像4倍也不模糊)。
第21章 移花接木
本章將講解如何通過(guò)提供的3種圖片數(shù)據(jù)集,基于CycleGAN技術(shù)來(lái)實(shí)現(xiàn)根據(jù)橘子生成蘋(píng)果、根據(jù)馬生成斑馬,以及將男性人臉面貌和女性人臉面貌進(jìn)行互換。
讀者對(duì)象
◇ 統(tǒng)計(jì)學(xué)從業(yè)者。
◇ 人工智能研究人員。
◇ 深度學(xué)習(xí)開(kāi)發(fā)者。
◇ 機(jī)器學(xué)習(xí)開(kāi)發(fā)者。
◇ 人工智能工程師。
◇ 互聯(lián)網(wǎng)行業(yè)的創(chuàng)業(yè)者。
閱讀本書(shū)的前提
本書(shū)介紹的項(xiàng)目主要運(yùn)行環(huán)境配置信息和安裝流程分別如下。
①Linux系統(tǒng)的分支Ubuntu,版本16.04.5。
②虛擬環(huán)境virtualenv,版本16.0.0。
③Python腳本編程語(yǔ)言,版本Python3.6.6。
④試驗(yàn)代碼運(yùn)行環(huán)境Jupyter Notebook,版本5.4.0。
⑤深度學(xué)習(xí)框架TensorFlow,版本1.10.1;Keras,版本2.1.6。
各個(gè)項(xiàng)目不同的安裝包版本信息,在各個(gè)項(xiàng)目開(kāi)始的時(shí)候會(huì)提及。
在寫(xiě)這本書(shū)的時(shí)間里,各種技術(shù)框架和工具不斷地更新和迭代,各自的版本也升級(jí)了,所以如果讀者在本書(shū)的項(xiàng)目中會(huì)看到所提及的一些技術(shù)框架和工具的版本高于這里提及的版本,請(qǐng)以具體項(xiàng)目里所提及的版本為主;這么做的目的是讓初學(xué)者適應(yīng)和習(xí)慣持續(xù)更新的技術(shù)框架和工具。
本書(shū)對(duì)應(yīng)的每一章節(jié)的資源或代碼的Github倉(cāng)庫(kù)下載地址如下。
◇ https://github.com/21-projects-for-deep-learning/MyBook
致謝
感謝互聯(lián)網(wǎng)時(shí)代,感恩深度學(xué)習(xí)領(lǐng)域的先驅(qū)者們?yōu)樯窠?jīng)網(wǎng)絡(luò)技術(shù)的基礎(chǔ)架構(gòu)做出的貢獻(xiàn),包括但不限于Geoffrey Hinton(杰弗里·希爾頓)、Yann LeCun(楊立昂)、Yoshua Bengio(約書(shū)亞·本吉奧)、Andrew Ng(吳恩達(dá))、Francois Chollet(弗朗索瓦·肖萊)等資深專(zhuān)家。Google作為全球科技公司對(duì)開(kāi)源做出的貢獻(xiàn)是巨大的,讓無(wú)數(shù)的開(kāi)發(fā)者和研究者可以沿著Google前沿的技術(shù)一起前進(jìn),也讓我們可以為此做出微薄的貢獻(xiàn)。
還要真誠(chéng)地感謝北京源智天下科技有限公司的許亞楠女士,她在知名博客網(wǎng)站上看到了我的博客,和我進(jìn)行了詳細(xì)的溝通,經(jīng)過(guò)她的認(rèn)可和熱情的推動(dòng)后,我決定編寫(xiě)和出版本書(shū)。也感謝王蕾編輯,因?yàn)樗闹匾暫驼\(chéng)懇的建議,本書(shū)終于完美收官。
最后,由于作者水平和成書(shū)時(shí)間所限,本書(shū)難免存有疏漏和不當(dāng)之處,敬請(qǐng)專(zhuān)家和讀者給出批評(píng)和指正。
張強(qiáng)
2019年5月
- Android平板電腦開(kāi)發(fā)實(shí)戰(zhàn)詳解和典型案例
- 大數(shù)據(jù)處理系統(tǒng):Hadoop源代碼情景分析
- 嵌入式系統(tǒng)開(kāi)發(fā)之道:菜鳥(niǎo)成長(zhǎng)日志與項(xiàng)目經(jīng)理的私房菜
- Android游戲開(kāi)發(fā)大全
- 軟件需求分析實(shí)戰(zhàn)
- 微服務(wù)架構(gòu)原理與開(kāi)發(fā)實(shí)戰(zhàn)
- 從隱秩序到顯規(guī)則:工程體系基于V++規(guī)則引擎的生態(tài)演進(jìn)
- 項(xiàng)目實(shí)踐精解:基于EJB 3.0和Web Services的Java應(yīng)用開(kāi)發(fā)
- Android性能優(yōu)化入門(mén)與實(shí)戰(zhàn)
- 深入淺出Spring Boot 3.x
- 深入理解Prometheus監(jiān)控系統(tǒng)
- Spring Boot+Vue 3大型前后端分離項(xiàng)目實(shí)戰(zhàn)
- Unity 3D游戲開(kāi)發(fā)技術(shù)詳解與典型案例
- Scrum捷徑:敏捷策略、工具與技巧
- IEC算法及其在多目標(biāo)優(yōu)化中的應(yīng)用