iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 11
0
AI & Machine Learning

探索 Microsoft CNTK 機器學習工具系列 第 11

MNIST 手寫數字資料集:多層感知器

  • 分享至 

  • xImage
  •  

Introduction

我們使用 MNIST 資料集訓練一個多層感知器。

我們的多層感知器(Multilayer Perceptron, MLP)只有兩層隱藏(hidden layers)。

Tasks

學習資源:cntk\Tutorials\CNTK_103C_MNIST_MultiLayerPerceptron.ipynb
使用 MNIST 資料集訓練多層感知器,將圖像分成 10 個分類,即 0 ~ 9。

1.資料讀取(Data reading):
2.資料處理(Data preprocessing):
MNIST 手寫數字資料集:邏輯迴歸模型

3.建立模型(Model creation):

每個全連接層(Fully connected layer),包含了輸入維度,輸出維度和激活函數。
有 2 個全連接層,每層都使用 ReLU 作為激活函數。
最後的輸出層輸出一個具有 10 個值的向量,然後使用 Softmax 函數歸一化模型的輸出值。

i:輸入維度 = 784 ,每個像素一個維度。
o:輸出維度 = 400 ,隱藏層的節點數量。
a:激活函式 = ReLU,線性整流函數(Rectified Linear Unit, ReLU)
Fully connected layer

2 個隱藏層的維度都設置為 400。

# 隱藏層
num_hidden_layers = 2
# 隱藏層維度
hidden_layers_dim = 400

宣告函式:create_model,CNTK layers 模組提供 Dense 函數,使用 ReLU 作為激活函式。

def create_model(features):
    with C.layers.default_options(init = C.layers.glorot_uniform(), activation = C.ops.relu):
            h = features
            for _ in range(num_hidden_layers):
                h = C.layers.Dense(hidden_layers_dim)(h)
            r = C.layers.Dense(num_output_classes, activation = None)(h)
            return r

z:評估值

# 將每個像素除以 255 ,將輸入轉換成 0 ~ 1 之間的機率值。
z = create_model(input/255.0)

4.訓練模型(Learning the model):

使用 softmax 函式歸一化。

loss = C.cross_entropy_with_softmax(z, label)

5.評估模型(Evaluation):

評估模型,比較輸出值和標籤值。

label_error = C.classification_error(z, label)

上一篇
MNIST 手寫數字資料集:邏輯迴歸模型
下一篇
MNIST 手寫數字資料集:卷積神經網路
系列文
探索 Microsoft CNTK 機器學習工具30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言