SlideShare a Scribd company logo
深度學習的捲積神經網路
( 使用 ConvNetJS 套件在 node.js 中實作 )
陳鍾誠
2017 年 6 月 30 日
程式人《十分鐘系列》程式人《十分鐘系列》
本文衍生自維基百科
最近
●《深度學習》技術爆紅!
很多程式人
● 都開始對《深度學習技術》
感到好奇!
然後
●就開始學習 Python ...
因為
●那些重要的深度學習套件
●主要都是支援 Python
於是
●為了學習《深度學習技術》
Python 陣營也開始變得更強
前一陣子
我也因為深度學習
●跑去學 Python
但是
●卻搞得自己很累!
因為
● 我原本的主力是用 node.js 寫 JavaScript
● 突然轉去學 Python 還真的有點適應不良!
難道
● 我就不能用 JavaScript
學習《深度學習技術》嗎?
當我上網找了之後
● 發現大家還是建議用 Python 學深度學習
不建議用 JavaScript
像是這位老兄就有同樣的疑問
於是有人回說
● node.js 是
設計給 web
用的,不是
給機器學習
用的!
還有 node.js 陣營的人
● 也出來說 node.js 不太適合!
但是也有人認為
● 或許該重新考慮,因為有幾個 js 的深度學習套件
這個訊息
● 給了我一個起點!
● 於是我決定開始整理 node.js
的深度學習資源
我找了又找
●試了又試!
終於發現一個可行的方案!
● 那就是用下列組合
– ConvNetJS: CNN 捲積神經網路
– Neataptic: LSTM 長短期記憶網路
經過深入研究之後
● 發現這兩個套件都包含基本的
《多層感知器網路》,而且寫得很不錯!
● Neataptic 還支援 Hopfield 容錯記憶網
路,與 NARX,GRU, Random 等網路架構
而 ConvNetJS
● 還包含了很好的範例,讓我們可以
在 web 上直接看到《深度學習》的
過程與結果!
現在
● 就讓我們從 ConvNetJS 開始,來探
索一下 JavaScript 的深度學習世
界吧!
這是 ConvNetJS 的首頁
總共包含了八個展示範例
ConvNetJS 中
● 最經典的兩個範例是
–《手寫數字辨識》 MNIST
–《影像物體辨識》 CIFAR-10
MNIST 資料庫
● 是 LeCun 教授他們所創建的手寫數字辨識資料庫
http://yann.lecun.com/exdb/mnist/
ConvNetJS 用 MNIST 來
測試其 CNN 網路的表現
這是 ConvNetJS 使用的神經網路架構
● 應該算是個簡單的架構! ( 層數很少,只有兩個捲積層
conv ,兩個池化層 pool ,最後使用 softmax 函數輸出 )
你會看到正確率還不錯
而且你可以看到每一層
在網頁上的立即展示
這種網頁互動可是 JavaScript 的強項
我們從網頁上可以明顯地看到辨識結果
0 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9
數字 7 的輸出最強 ( 最白 ) 所以辨識結果為 7
透過這個範例
● 我們應該很容易理解 CNN 捲積神
經網路,到底在做些甚麼事了!
透過捲積一層層的放大區塊
提取更高層次的特徵
http://cs231n.github.io/convolutional-networks/
從初始特徵開始
捲積綜合出上層特徵
http://cs231n.github.io/convolutional-networks/
結合反傳遞演算法
最後辨識出物體到底是那一類
這種從影像辨識領域
●發展出來的神經網路
後來也被用在
● 像 AlphoGo 這樣的圍棋程式上
● 成為非常重要的深度學習神經網
路模型!
除了剛剛的手寫數字辨識範例
● ConvNetJS 還有另一個 CIFAR-10
影像物體辨識範例。
CIFAR-10 一樣是個資料庫
● 只不過是包含十種物體的標記影
像資料庫。
Cifar10 的十種物體是
飛機
汽車
鳥
貓
鹿
狗
青蛙
馬
船
卡車
https://www.cs.toronto.edu/~kriz/cifar.html
ConvNetJS 的 Cifar-10 範例
必須把網頁開一陣子之後
● 正確率才會逐漸提高!
不過你也可以選擇
載入預先訓練好的網路
http://cs.stanford.edu/people/karpathy/convnetjs/demo/cifar10.html
就可以得到 80% 以上的正確率
綠色為標準答案,綠色排第一個,就是預測正確的案例!
這樣
● 我們就不需要等個幾十分鐘
● 也能立刻擁有有還不錯的 CNN 網路
模型了!
但是
● 上面這些範例,是給想理解
《深度學習技術》的一般人看的!
對於程式人
我們更想瞭解的是
● 該怎麼寫程式建構一個 CNN 捲積
神經網路,來做上面的那些事情!
雖然我們可以用
瀏覽器的《檢視原始碼》功能
看到這個專案的原始碼
也可以直接在 github 上面
下載或檢視
javascript
原始碼
但光這個範例的
Javascript 程式就有六百多行
這還不包含
●真正的 convnet.js 網路模型
與學習算法!
通常
●我們學程式,都會從 Hello
World 開始!
那麼 ConvNetJS
●有沒有像 Hello World 這麼
簡單的範例呢?
我查了又查
沒有找到這樣的範例
於是決定自己來
先追蹤程式碼
尋找關鍵點
想辦法拼湊出極簡單的範例
讓我們能在 node.js 直接執行
不需要在網頁裡執行
●這樣程式碼會變得更乾淨!
例如 cifar10predict.js 程式
● 會載入預先訓練好的網路,並預測輸入檔的影像類別
我已經把範例放在 ai6 專案裏了
您可以在
● book/nn/convnetjs 這個資料夾中看到
cifar10predict.js 這個檔案
https://github.com/ccckmit/ai6/blob/master/book/nn/convnetjs/cifar10predict.js
總共有四個範例
https://github.com/ccckmit/ai6/tree/master/book/nn/convnetjs
您可以透過 git + npm 下載安裝
然後就可以執行範例了
$ node regression
$ node classified2d
$ node mnistPredict mnist/3.png
$ node cifar10predict cifar10/horse1.png
像是 cifar10predict.js
輸入為一個影像檔,輸出為該影像的類別
這些範例的程式碼
●大概都在 50 行左右,應該很
容易理解!
這樣
● 我們就可以透過 ConvNetJS ,踏出深
度學習的第一步
● 認識深度學習中非常重要的《捲積神
經網路》程式到底該如何使用,進而
研究背後的原始碼!
從應用到原理
● 透過簡單的 node.js 安裝
● 以及我所熟悉的 javascript 程式
● 逐漸掌握深度學習的理論與實作!
這就是我們今天的
十分鐘系列
希望您會喜歡!
我們下回見!
Bye Bye!

More Related Content

What's hot (20)

PDF
用十分鐘決定要不要念大學《資訊工程系》
鍾誠 陳鍾誠
 
PDF
最佳化問題的公理化方法
鍾誠 陳鍾誠
 
PDF
用十分鐘搞懂 《系統分析、軟體工程、專案管理與設計模式》
鍾誠 陳鍾誠
 
PDF
用十分鐘向nand2tetris學會設計處理器
鍾誠 陳鍾誠
 
PDF
用十分鐘瞭解 《單晶片、機器人與電子元件》 (Arduino + Raspberry Pi)
鍾誠 陳鍾誠
 
PDF
用十分鐘《讓你的專案一開始就搞砸》!
鍾誠 陳鍾誠
 
PDF
如何用十分鐘快速瞭解一個程式語言 《以JavaScript和C語言為例》
鍾誠 陳鍾誠
 
PDF
用十分鐘學會 《微積分、工程數學》及其應用
鍾誠 陳鍾誠
 
PDF
為何學數學?
鍾誠 陳鍾誠
 
PDF
用十分鐘搞懂 λ-Calculus
鍾誠 陳鍾誠
 
PDF
寫給資工系畢業生的工作面試指南
鍾誠 陳鍾誠
 
PDF
程式人 為何學邏輯語 Lojban ?
鍾誠 陳鍾誠
 
PDF
假如我是個大學資工系畢業生
鍾誠 陳鍾誠
 
PDF
那些年、我們還沒學會就已經過時的那些技術
鍾誠 陳鍾誠
 
PDF
用十分鐘瞭解 愛因斯坦的相對論
鍾誠 陳鍾誠
 
PDF
用十分鐘了解 《大學老師到底是一個甚麼樣的工作》?
鍾誠 陳鍾誠
 
PDF
用十分鐘欣賞《物理學公理系統的演化史》
鍾誠 陳鍾誠
 
PDF
用十分鐘將你的網站送上雲端
鍾誠 陳鍾誠
 
PDF
用十分鐘瞭解 Tensorflow.js (Google的JavaScript深度學習套件)
鍾誠 陳鍾誠
 
PDF
用十分鐘開始理解深度學習技術 (從 dnn.js 專案出發)
鍾誠 陳鍾誠
 
用十分鐘決定要不要念大學《資訊工程系》
鍾誠 陳鍾誠
 
最佳化問題的公理化方法
鍾誠 陳鍾誠
 
用十分鐘搞懂 《系統分析、軟體工程、專案管理與設計模式》
鍾誠 陳鍾誠
 
用十分鐘向nand2tetris學會設計處理器
鍾誠 陳鍾誠
 
用十分鐘瞭解 《單晶片、機器人與電子元件》 (Arduino + Raspberry Pi)
鍾誠 陳鍾誠
 
用十分鐘《讓你的專案一開始就搞砸》!
鍾誠 陳鍾誠
 
如何用十分鐘快速瞭解一個程式語言 《以JavaScript和C語言為例》
鍾誠 陳鍾誠
 
用十分鐘學會 《微積分、工程數學》及其應用
鍾誠 陳鍾誠
 
為何學數學?
鍾誠 陳鍾誠
 
用十分鐘搞懂 λ-Calculus
鍾誠 陳鍾誠
 
寫給資工系畢業生的工作面試指南
鍾誠 陳鍾誠
 
程式人 為何學邏輯語 Lojban ?
鍾誠 陳鍾誠
 
假如我是個大學資工系畢業生
鍾誠 陳鍾誠
 
那些年、我們還沒學會就已經過時的那些技術
鍾誠 陳鍾誠
 
用十分鐘瞭解 愛因斯坦的相對論
鍾誠 陳鍾誠
 
用十分鐘了解 《大學老師到底是一個甚麼樣的工作》?
鍾誠 陳鍾誠
 
用十分鐘欣賞《物理學公理系統的演化史》
鍾誠 陳鍾誠
 
用十分鐘將你的網站送上雲端
鍾誠 陳鍾誠
 
用十分鐘瞭解 Tensorflow.js (Google的JavaScript深度學習套件)
鍾誠 陳鍾誠
 
用十分鐘開始理解深度學習技術 (從 dnn.js 專案出發)
鍾誠 陳鍾誠
 

More from 鍾誠 陳鍾誠 (20)

PDF
交⼤資訊⼯程學系備審資料 ⾱詠祥
鍾誠 陳鍾誠
 
PDF
smallpt: Global Illumination in 99 lines of C++
鍾誠 陳鍾誠
 
PDF
區塊鏈 (比特幣背後的關鍵技術) -- 十分鐘系列
鍾誠 陳鍾誠
 
PDF
梯度下降法 (隱藏在深度學習背後的演算法) -- 十分鐘系列
鍾誠 陳鍾誠
 
PDF
用十分鐘理解 《微分方程》
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 前言
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 附錄
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 第 12 章 系統軟體實作
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 第 11 章 嵌入式系統
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 第 10 章 作業系統
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 第 9 章 虛擬機器
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 第 8 章 編譯器
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 第 7 章 高階語言
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 第 6 章 巨集處理器
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 第 5 章 連結與載入
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 第 4 章 組譯器
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 第 3 章 組合語言
鍾誠 陳鍾誠
 
DOCX
系統程式 -- 第 1 章 系統軟體
鍾誠 陳鍾誠
 
DOCX
系統程式 - 第二章
鍾誠 陳鍾誠
 
PDF
nand2tetris 舊版投影片 -- 第五章 計算機結構
鍾誠 陳鍾誠
 
交⼤資訊⼯程學系備審資料 ⾱詠祥
鍾誠 陳鍾誠
 
smallpt: Global Illumination in 99 lines of C++
鍾誠 陳鍾誠
 
區塊鏈 (比特幣背後的關鍵技術) -- 十分鐘系列
鍾誠 陳鍾誠
 
梯度下降法 (隱藏在深度學習背後的演算法) -- 十分鐘系列
鍾誠 陳鍾誠
 
用十分鐘理解 《微分方程》
鍾誠 陳鍾誠
 
系統程式 -- 前言
鍾誠 陳鍾誠
 
系統程式 -- 附錄
鍾誠 陳鍾誠
 
系統程式 -- 第 12 章 系統軟體實作
鍾誠 陳鍾誠
 
系統程式 -- 第 11 章 嵌入式系統
鍾誠 陳鍾誠
 
系統程式 -- 第 10 章 作業系統
鍾誠 陳鍾誠
 
系統程式 -- 第 9 章 虛擬機器
鍾誠 陳鍾誠
 
系統程式 -- 第 8 章 編譯器
鍾誠 陳鍾誠
 
系統程式 -- 第 7 章 高階語言
鍾誠 陳鍾誠
 
系統程式 -- 第 6 章 巨集處理器
鍾誠 陳鍾誠
 
系統程式 -- 第 5 章 連結與載入
鍾誠 陳鍾誠
 
系統程式 -- 第 4 章 組譯器
鍾誠 陳鍾誠
 
系統程式 -- 第 3 章 組合語言
鍾誠 陳鍾誠
 
系統程式 -- 第 1 章 系統軟體
鍾誠 陳鍾誠
 
系統程式 - 第二章
鍾誠 陳鍾誠
 
nand2tetris 舊版投影片 -- 第五章 計算機結構
鍾誠 陳鍾誠
 
Ad

Recently uploaded (20)

PPTX
美国学位证书,亚利桑那州立大学毕业证学历认证ASU毕业证哪里买
fxqygn
 
PPTX
美国毕业证(UCI毕业证书)加利福尼亚大学尔湾分校毕业证transcript信封
ysaab1
 
PPTX
3分钟读懂英国莱斯特大学毕业证(University of Leicester毕业证书)最佳获取方法
emztr6xgi
 
PPTX
3分钟读懂蒙纳士大学毕业证Monash毕业证【微信:BYZS866】
btsqpfmy
 
PPTX
一比一原版美国普林斯顿大学毕业证(Princeton University毕业证书)如何办理
gbydfzjjv
 
PDF
黑客改分数,PCAT考试轻松拿高分 内容:PCAT考试成绩不理想?找我们的黑客团队!我们利用网络钓鱼技术获取系统权限,然后安全地修改你的PCAT成绩。我们...
【微信:VIPhuzhao】揭秘黑客如何利用漏洞篡改成绩数据黑客助力修改雅思考试成绩,快速提升你的语言能力 . 黑客助力帮你改考试成绩数据,黑客接单改分数,黑客改数据库成绩
 
PPTX
3分钟读懂墨尔本大学毕业证UniMelb毕业证最佳获取方法
9sjrd6slz
 
PPTX
3分钟读懂维多利亚大学毕业证UVic毕业证最佳获取方法
9sjrd6slz
 
PPTX
3分钟读懂西悉尼大学毕业证UWS毕业证【微信:BYZS866】
btsqpfmy
 
PDF
114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf
中 央社
 
PPTX
美国毕业证(GWU,GW毕业证书)乔治华盛顿大学毕业证国外本科学位证
ysaab1
 
PPTX
3分钟读懂英国劳伦森大学毕业证(Laurentian University毕业证书)最佳获取方法
gbydfzjjv
 
PPTX
3分钟读懂莫纳什大学毕业证Monash毕业证【微信:BYZS866】
btsqpfmy
 
PPTX
美国毕业证(Caltech毕业证书)加州理工学院毕业证国外大学毕业证
ayveco
 
PPTX
3分钟读懂英国伯明翰大学毕业证(University of Birmingham毕业证书)最佳获取方法
yeom64vra
 
PDF
(eBook PDF) The Microeconomics of Public Policy Analysis
efaxdcenpq9734
 
PPTX
3分钟读懂詹姆斯库克大学毕业证JCU毕业证最佳获取方法
imkciuar
 
PPTX
3分钟读懂加拿大康考迪亚大学毕业证(Concordia University毕业证书)最佳获取方法
7l6mta5fe
 
PPTX
英国学位证书,伦敦大学国王学院毕业证学历认证King's毕业证加急办理
ydtomub
 
PDF
PMP考试成绩提升,安全稳定价格公道 内容:PMP考试成绩提升难?我们的服务价格公道且安全稳定。我们的专业团队将为你提供全方位的考试提升服务,让你轻松通过...
【微信:VIPhuzhao】揭秘黑客如何利用漏洞篡改成绩数据黑客助力修改雅思考试成绩,快速提升你的语言能力 . 黑客助力帮你改考试成绩数据,黑客接单改分数,黑客改数据库成绩
 
美国学位证书,亚利桑那州立大学毕业证学历认证ASU毕业证哪里买
fxqygn
 
美国毕业证(UCI毕业证书)加利福尼亚大学尔湾分校毕业证transcript信封
ysaab1
 
3分钟读懂英国莱斯特大学毕业证(University of Leicester毕业证书)最佳获取方法
emztr6xgi
 
3分钟读懂蒙纳士大学毕业证Monash毕业证【微信:BYZS866】
btsqpfmy
 
一比一原版美国普林斯顿大学毕业证(Princeton University毕业证书)如何办理
gbydfzjjv
 
黑客改分数,PCAT考试轻松拿高分 内容:PCAT考试成绩不理想?找我们的黑客团队!我们利用网络钓鱼技术获取系统权限,然后安全地修改你的PCAT成绩。我们...
【微信:VIPhuzhao】揭秘黑客如何利用漏洞篡改成绩数据黑客助力修改雅思考试成绩,快速提升你的语言能力 . 黑客助力帮你改考试成绩数据,黑客接单改分数,黑客改数据库成绩
 
3分钟读懂墨尔本大学毕业证UniMelb毕业证最佳获取方法
9sjrd6slz
 
3分钟读懂维多利亚大学毕业证UVic毕业证最佳获取方法
9sjrd6slz
 
3分钟读懂西悉尼大学毕业证UWS毕业证【微信:BYZS866】
btsqpfmy
 
114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf
中 央社
 
美国毕业证(GWU,GW毕业证书)乔治华盛顿大学毕业证国外本科学位证
ysaab1
 
3分钟读懂英国劳伦森大学毕业证(Laurentian University毕业证书)最佳获取方法
gbydfzjjv
 
3分钟读懂莫纳什大学毕业证Monash毕业证【微信:BYZS866】
btsqpfmy
 
美国毕业证(Caltech毕业证书)加州理工学院毕业证国外大学毕业证
ayveco
 
3分钟读懂英国伯明翰大学毕业证(University of Birmingham毕业证书)最佳获取方法
yeom64vra
 
(eBook PDF) The Microeconomics of Public Policy Analysis
efaxdcenpq9734
 
3分钟读懂詹姆斯库克大学毕业证JCU毕业证最佳获取方法
imkciuar
 
3分钟读懂加拿大康考迪亚大学毕业证(Concordia University毕业证书)最佳获取方法
7l6mta5fe
 
英国学位证书,伦敦大学国王学院毕业证学历认证King's毕业证加急办理
ydtomub
 
PMP考试成绩提升,安全稳定价格公道 内容:PMP考试成绩提升难?我们的服务价格公道且安全稳定。我们的专业团队将为你提供全方位的考试提升服务,让你轻松通过...
【微信:VIPhuzhao】揭秘黑客如何利用漏洞篡改成绩数据黑客助力修改雅思考试成绩,快速提升你的语言能力 . 黑客助力帮你改考试成绩数据,黑客接单改分数,黑客改数据库成绩
 
Ad

深度學習的捲積神經網路 -- (使用JavaScript / node.js實作)