iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
1
自我挑戰組

TensorFlow 2 30天自我養成計畫系列 第 16

[Day 16]CNN環境建置Part 2

  • 分享至 

  • xImage
  •  
今天是中秋節,筆者在此祝大家中秋節快樂!今天會繼續完成昨天的建立模型,以及會開始進行訓練囉!那我們就開始啦~

前面1~3步驟請查閱[Day15]
4. 建立卷積層2與持化層2
分為兩部分講解,如下所示:

  • 卷積層2
    我們為了要把原本的16個影像轉換為36個,請輸入以下程式碼:

注意!卷積運算時,我們所設定的參數padding='same',由於不改變影像的大小,所以大小還是14X14
一樣逐一仔細講解程式碼:
* filters=36: 建立36個濾鏡filter weight
* kernel_size=(5, 5): 每一個濾鏡是5X5大小
* padding='same': 這串程式碼可以讓卷積運算所產生的卷積影像大小不變(如上所述)
* activation='relu': 設定激活函數ReLU

  • 持化層2
    建立完卷積層2後,我們繼續建立持化層2,輸入以下指令:

    我們剛剛有輸入程式碼pool_size=(2, 2),執行後可以將原本36個14X14影像縮小成7X7
    注意!接下來我們會再鍵入執行碼model.add(Dropout(0.25)),這樣可以去除25%的神經元,避免機器過度學習
  1. 建立神經網路並查看摘要
    接下來我們要繼續建立神經網路(平坦層、隱藏層、輸出層),分為三部分講解
  • 平坦層
    建立平坦層需要鍵入指令,如下所示:

    我們剛剛有製作出了36個7X7的持化層2,請將它轉化為一維向量。計算長度為36X7X7=1764,這樣就可對應至1764神經元囉!

  • 隱藏層
    輸入指令model.add(Dense(128, activation='relu'))可建立隱藏層,總共128神經元
    注意!與之前相同,再鍵入執行碼model.add(Dropout(0.5)),這樣可以去除50%的神經元,避免機器過度學習

  • 輸出層
    輸入以下指令:

    藉由上述程式碼可看到,總共會有10個神經元對應至0~9,並使用softmax進行轉換

  • 查看摘要
    鍵入程式碼print(model.summary())可查看模型摘要

進行訓練
今天我們還不會正式進入訓練的部分,但會先定義訓練的方法
訓練前,我們必須要先經過compile(編譯)的方法進行相關之設定,如以下程式碼所示:

透過此種方法需要輸入一些參數,如下所示:

  1. loss函數
  2. optimizer函數
  3. metrics函數

明天會就上方的函數稍作解釋,就會開始進行訓練啦!明天繼續努力囉!/images/emoticon/emoticon01.gif

Reference: 林大貴(2019):TensorFlow+Keras 深度學習人工智慧實務應用。新北市:博碩文化


上一篇
[Day 15]CNN環境建置Part 1
下一篇
[Day 17]開始CNN訓練
系列文
TensorFlow 2 30天自我養成計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言