Neural Network

      在〈Neural Network〉中尚無留言

深度學習(deep learning)是機器學習的一個子項目。機器學習需要人工傳入特徵,再進行演算分類,而深度學習只要把資料倒進去,特徵會自已分析,然後自動分類。

tensorflow是深度學習的一個框架,目前最多人使用。其實深度學習的框架蠻多的,比如PyTorch就是另一個蠻常看到的框架。支援 Python 的Neural Network 框架請見下圖說明。

Tensorflow 算是個奇葩,在2015年之間突然打敗其它框架,使用量大幅攀升。主要是Google大力推舉的關係。所以我們也就以這個框架來完成 Neural Network 的工作。

Keras

Keras 凱拉斯,是支援 TensorFlow 的更高階函數庫,可以用簡潔的程式碼完成一個Neural Network模型。

什麼神經網路

下圖所示為最簡單只有三層的神經網路。

最左邊的節點,稱為 Input Layer(輸入層),是負責接收外界資料。
中間稱為隱藏層,隱藏層可以多個。
最右邊稱為輸入層(Output),負責展示結果。

x 跟 y 之間的每一條連線,都是一個權重值,y 跟 z 之間的連線也是權重。

$(y_{0}=\sum_{i=0}^{i=n}x_{i}*W_{i0})$
$(y_{1}=\sum_{i=0}^{i=n}x_{i}*W_{i1})$
…………………………..

也就是說,$(y_{0})$ 是 $(x_{0})$ ~ $(x_{n})$ 所有節點的值乘上相對應的權重,然後加總起來。一開始所有的權重都是平均亂數,計算的結果會和已知的結果產生損失函數,然後決定要往上或往下調整權重,供下一次的乘積使用。

第三層 z 為輸出層,通常是全連接層,其值也是所有的 y 節點值乘上相對應權重的總和。
$(z_{0}=\sum_{j=0}^{j=2}y_{j}*W_{j0})$
$(z_{1}=\sum_{j=0}^{j=2}y_{j}*W_{j1})$

todo

模型視覺化

要將上面的模型,以圖形顯示出來,可以使用 ann-visualizer 套件。但 ann-visualizer 又會調用 graphviz 這個套件,請先到 graphviz 官網 下載 graphviz for windows 版本的軟体,安裝時請注意要選取

Add Graphviz to system PATH for all user

安裝完後,記得 Pycham要重新開啟。如果沒有安裝或沒有設定上面的路徑,等會執行程式時,就會出現 找不到檔案 的錯誤訊息。

如果是在Linux之下,需使用如下指令安裝這個軟体

sudo apt-get install graphviz

然後在Pycharm的虛擬環境下安裝如下三個套件

pip install ann-visualizer graphviz tensorflow

最後,可以使用如下測試程式,看圖型有沒有跑出來。

from keras.models import Sequential;
from keras.layers import Dense;
network = Sequential();
        #Hidden Layer#1
network.add(Dense(units=6,
                  activation='relu',
                  kernel_initializer='uniform',
                  input_dim=11));
        #Hidden Layer#2
network.add(Dense(units=6,
                  activation='relu',
                  kernel_initializer='uniform'));
        #Exit Layer
network.add(Dense(units=1,
                  activation='sigmoid',
                  kernel_initializer='uniform'));
from ann_visualizer.visualize import ann_viz;
ann_viz(network, view=True, title="Test", filename="ann.gv");

線上視覺化

http://alexlenail.me/NN-SVG/ 這個網站,可以線上繪製CNN圖形。

https://brohrer.mcknote.com/zh-Hant/how_machine_learning_works/how_convolutional_neural_networks_work.html

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *