iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0
AI/ ML & Data

ML/DL-新手選手村系列 第 28

day28_DL簡介(2/2): Recurrent Neural Network (RNN) 與 Convolution Neural Network (CNN)

  • 分享至 

  • xImage
  •  
  • 終於進入到DL的世界,我們重點是放在ML因此不會詳談DL的各種演算法,只會簡單用keras介紹遞迴神經網路Recurrent Neural Network,RNN與卷積神經網路Convolutional Neural Network,CNN,替同學將來想要繼續深造DL打地基。

  • 在說明原理之前,先觀察一張圖:
    https://ithelp.ithome.com.tw/upload/images/20240914/2016832453iKvKe4mO.png

看到了嗎?中間那個h是隱藏層hidden的縮寫,x是輸入層input,o是輸出層output。hidden接受前一層輸入和自己遞迴到輸出層。右上角的(t) 是 time-series 的意思[昨日]我們有提過。

  • 連續的RNN作用圖:

https://ithelp.ithome.com.tw/upload/images/20240914/20168324oQUbwpNWu7.png

  • RNN 原理:
    • 原理:

      • RNN將狀態在自身網路中循環傳遞,可以接受更廣泛的time-series data[昨日]我們提過的輸入。
    • 步驟:

      • 1.layer=1:h_1^{(t)}接收x^{(t)}和h_1^{(t-1)}的輸入
      • 2.layer=2:h_2{(t)}接受o_1^{(t)}和h_2^{(t-1)}的輸入,h_2^{(t-1)}表示同一層前一時步的影藏層
    • 程式碼:

from tensorflow.keras import Sequential
from tensorflow.keras.layers import Embedding
from tensorflow.keras.layers import SimpleRNN

# 載入 DL模型
model = Sequential()
# 建一個輸入1000維度,輸出32維度模型
model.add(Embedding(input_dim=1000, output_dim=32))
# 載入RNN模型
model.add(SimpleRNN(32))
# 模型摘要
model.summary

  • CNN 原理:
    • 原理:將圖像切片成ex. 3 x 3 的方格的小圖(如下圖),來解析原圖,企圖想要找到最接近原圖的複製圖。
      https://ithelp.ithome.com.tw/upload/images/20240914/20168324HxhfxQs0lG.png
    • 程式碼 :
# Create CNN Model
class CNN_Model(nn.Module):
    def __init__(self):
        super(CNN_Model, self).__init__()
        # Convolution 1 , input_shape=(1,28,28)
        self.cnn1 = nn.Conv2d(in_channels=1, out_channels=16, kernel_size=5, stride=1, padding=0) #output_shape=(16,24,24)
        self.relu1 = nn.ReLU() # activation
        # Max pool 1
        self.maxpool1 = nn.MaxPool2d(kernel_size=2) #output_shape=(16,12,12)
        # Convolution 2
        self.cnn2 = nn.Conv2d(in_channels=16, out_channels=32, kernel_size=5, stride=1, padding=0) #output_shape=(32,8,8)
        self.relu2 = nn.ReLU() # activation
        # Max pool 2
        self.maxpool2 = nn.MaxPool2d(kernel_size=2) #output_shape=(32,4,4)
        # Fully connected 1 ,#input_shape=(32*4*4)
        self.fc1 = nn.Linear(32 * 4 * 4, 10) 
    
  • 因為我們只簡單介紹CNN概念,留給同學放在心裡,以後在「明年ithome 鐵人賽」進階篇會介紹,敬請期待。

  • 明天我們原本打算介紹ML的應用,以flask儲存與展示模型,但是考慮到flask是一門學科,所以打算留到下一屆鐵人賽再來說明,在這之前可以先參考flask入門,先打個底再來學習比較有成就感,所以明天調整談Bias and Variance trade-off,敬請期待。


上一篇
day27_DL簡介(1/2)
下一篇
day29_ML的Bias and Variance trade-off
系列文
ML/DL-新手選手村30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言