iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0
AI & Data

AI從入門到放棄系列 第 7

Day 07 ~ AI從入門到放棄 - 模型的搭建

  • 分享至 

  • twitterImage
  •  

今天要把模型給做出來,一個好的模型對我們幫助很大,它應該大小適中,過大或過小的模型會有什麼影響,我們之後會談到,今天先從簡單的模型開始即可。

以下是一個Sequential模型的開始,Keras提供的一種簡單的模型搭建方法,將我們所需要的層一直疊加上去即可,另一種Functional的方式允許我們搭建較複雜的模型,之後會談到。

from tensorflow.keras.models import Sequential
model = Sequential()

這個模型的名稱叫多層感知器,Multilayer perceptron, MLP,它包含了三個基本結構,輸入層、隱藏層、輸出層。模型的第一層是輸入層,輸入一維長度為784的向量,Keras會為我們的輸入數量加1,這一個額外的輸入視作為偏差使用,它的輸入會被固定為1。

from tensorflow.keras.layers import InputLayer, Dense

model.add(
    InputLayer(
        input_shape = (784, )
    )
)

接下來是模型的隱藏層,隱藏層可以包含一個或多個的層,本例中只用一層,擁有64個神經元,因此產生了(784+1)X64=50240個權重,每個神經元將與前一層的所有神經元連接,如果層與層之間採用此種連接方式則可以被稱作全連接層。

model.add(
  Dense(
    units = 64,
    activation = 'relu'
  )
)

最後是輸出層,模型的最後一層即為輸出層,我們要訓練10個輸出0~1的二元分類器,因此我們將神經元的數目設為10個,Keras不會為最後一層的輸出添加偏差,因此大家不用擔心會出現11個分類器,此層也將與前一層的所有神經元連接,權重數目為(64+1)X10=650個。

model.add(
  Dense(
    units = 10,
    activation = 'softmax'
  )
)

接著我們要確認一些模型訓練所使用的方法,過程中使用的參數等等,這裡未解釋的參數包含之前看到的activation,將留到之後解釋。

model.compile(
  optimizer = 'adam',
  loss = 'categorical_crossentropy',
  metrics = ['accuracy']
)

可以用以下的方法來觀察一下剛才搭建的模型,明天我們就可以開始訓練了。

model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 64)                50240     
_________________________________________________________________
dense_1 (Dense)              (None, 10)                650       
=================================================================
Total params: 50,890
Trainable params: 50,890
Non-trainable params: 0
_________________________________________________________________

上一篇
Day 06 ~ AI從入門到放棄 - 資料的預處理
下一篇
Day 08 ~ AI從入門到放棄 - 訓練模型
系列文
AI從入門到放棄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言