默默地學 Deep Learning (2)

上一次把最常接觸到的環境(Spyder)給架設好,並微調過了,這次要來安裝各種好用的「套件」。

第三步、Keras安裝:

打開「命令提示字元」也就是CMD,我們輸入以下指令:

pip install keras

應該會出現這樣的畫面,並有Successfully installed keras相關訊息出現:

好,你莫名其妙地安裝了Keras這個套件,那這個套件到底是什麼呢?

Keras官方網站

Keras中文翻譯網站

還記得之前已經安裝好了TensorFlow吧,這個Google釋出的功能強大的模組,但是由於其使用上有一點彆扭,因此Keras基於TensorFlow開發了平易近人的function使用方式。(當然Keras也可以使用其他的backend)

Use Keras if you need a deep learning library that:

.Allows for easy and fast prototyping (through user friendliness, modularity, and extensibility).

.Supports both convolutional networks and recurrent networks, as well as combinations of the two.

.Runs seamlessly on CPU and GPU.

這是取自Keras官網的一段話,換言之這是我們夢寐以求的方便功能,畢竟我一開始也說了我們的目的不是一步一步把整個Deep Learning功能給刻出來,一切以最快速的方式來進行功能的實現。

至於TensorFlow是什麼,我應該不用再多說了吧,有興趣的自己去查。

TensorFlow官網

而TensorFlow的安裝我們也早在上一篇文章裡面完成了,如果你對這件事情沒有自覺的話那還滿恐怖的。

小技巧:若有時使用CMD時出現莫名其妙的錯誤,可以試著右鍵>以系統管理員執行

第四步、建立自信心:

能夠到這邊,心裡應該覺得不太踏實,不知道自己建構的環境到底能不能使用,沒關係,以下帶著你體會coding的美好,能夠快速地讓你確認自己的環境架構完成,也讓你初嘗Deep Learning的滋味:

載入MNIST手寫資料庫,Keras裡面已經有內建了,因此可以很簡單的調用:

from keras.datasets import mnist
from keras.utils import np_utils
def load_data():
(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = x_train.reshape(x_train.shape[0], 28*28)
x_test = x_test.reshape(x_test.shape[0], 28*28)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train = x_train/255
x_test = x_test/255

y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)

return (x_train, y_train), (x_test, y_test)

(x_train,y_train),(x_test,y_test)=load_data()

當你輸入並執行上述程式碼之後,Spyder畫面應該會變成這樣:

可以看到右手邊的變數區已經載入了MNIST資料庫

當第一次執行時,由於要下載MNIST資料集,所以還會多跑出這個:

下載MNIST資料集

小技巧:若是你從網路上複製下來的code格式跑掉了,可以使用Source>Fix indentation這個功能,好用。

下一步,輸入並執行下列程式碼(這個時候之前教的分段執行就很好用囉):

#%%
import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense,Activation
from keras.optimizers import Adam
def build_model():

model = Sequential()

model.add(Dense(input_dim=28*28,
units=500,activation='relu'))
model.add(Dense(units=500,activation='relu'))
model.add(Dense(units=500,activation='relu'))
model.add(Dense(units=10,activation='softmax'))
model.summary()
return model

model = build_model()

執行之後會出現以下畫面:

請忽略右下角的TeamViewer

右下角可以看到他把我們建立的模型樣貌給輸出了出來,是一個簡單的四層架構。我沒有打算在這邊講解每一行程式碼是在幹嘛的,只是先讓你確認自己所搭建的環境是真的可以使用的而已。

接下來輸入這段程式碼:

model.compile(loss='categorical_crossentropy',optimizer="adam",metrics=['accuracy'])
model.fit(x_train,y_train,batch_size=100,epochs=20)
score = model.evaluate(x_train,y_train)
print ('\nTrain Acc:', score[1])
score = model.evaluate(x_test,y_test)
print ('\nTest Acc:', score[1])

這段程式碼是開始用我們載入的MNIST資料集來訓練自己搭建的簡單DNN模型,利用這個簡單DNN模型來分辨手寫的0–9阿拉伯數字。

執行後會長這樣,有用GPU的朋友們應該會快更多:

最後成果如下:

可以看到訓練了20次之後,其準確率分別達到了99%以及98%。

好,這下子我們可以確定Deep Learning基本工具的功能都完備了,下一章就要進入實際的本地影像檔案操作了,從下一章開始會對程式碼有比較詳細的講解,不要慌。

這邊感謝CH.Tseng這位大德,他所分享的文章惠我良多:

使用CNN識別辦公區狀態

還要感謝科技大擂台,我是在這裡第一次知道有Keras這好用的API。

Keras基礎篇

延伸閱讀:

假設繼續看到這邊的你,有確實上述步驟進行安裝,那麼應該對於叫出CMD來安裝有一點經驗了,除了用CMD來進行安裝之外,Anaconda還幫我們準備了好用的套件管理器:

開始>Anaconda3>Anaconda Navigator

打開之後會看到這個畫面,要不要傳送相關使用經驗就看自己了:

打開Navigator之後的畫面

在這邊可以更新Spyder以及其他已經預先安裝好的套件,像是Spyder等等。

這時左手邊我們選擇Environments,可以看到我們已經安裝好了那些套件等等,這樣對於套件的管理會比較輕鬆一些:

選擇All可以看到已經安裝以及尚未安裝的套件有哪些

好,但是我覺得這個介面還是有一些小Bug,因此讓我們回到利用CMD來安裝套件吧,只是讓你知道還有這個東西的存在而已。

Source: Deep Learning on Medium