keras的模型學習筆記—— 序貫(Sequential)模型

做一個深度學習的項目,開始必須要搭建一個模型,我們通過代碼逐步了解keras的模型的搭建

深度學習模型

定義模型

序貫模型是多個網絡層的線性堆疊,也就是“一條路走到黑”。

  1. 可以通過向Sequential模型傳遞一個layer的list來構造該模型
  2. 也可以通過.add()方法一個個的將layer加入模型中

模型需要知道輸入數據的shape,因此,Sequential的第一層需要接受一個關于輸入數據shape的參數.

  1. 傳遞一個input_shape的關鍵字參數給第一層
  2. 有些2D層,如Dense,支持通過指定其輸入維度input_dim來隱含的指定輸入數據shape。
  3. 如果你需要為輸入指定一個固定大小的batch_size(常用于stateful RNN網絡),可以傳遞batch_size參數到一個層中,例如你想指定輸入張量的batch大小是32,數據shape是(6,8),則你需要傳遞batch_size=32和input_shape=(6,8)

編譯

在訓練模型之前,我們需要通過compile來對學習過程進行配置。compile接收三個參數:
  1. 優化器optimizer:該參數可指定為已預定義的優化器名,如rmsprop、adagrad,或一個Optimizer類的對象,詳情見optimizers
  2. 損失函數loss:該參數為模型試圖最小化的目標函數,它可為預定義的損失函數名,如categorical_crossentropy、mse,也可以為一個損失函數。詳情見losses
  3. 指標列表metrics:對分類問題,我們一般將該列表設置為metrics=['accuracy']。指標可以是一個預定義指標的名字,也可以是一個用戶定制的函數.指標函數應該返回單個張量,或一個完成metric_name - > metric_value映射的字典.
# For a multi-class classification problem
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# For a binary classification problem
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

# For a mean squared error regression problem
model.compile(optimizer='rmsprop',
              loss='mse')

# For custom metrics
import keras.backend as K

def mean_pred(y_true, y_pred):
    return K.mean(y_pred)

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy', mean_pred])

快速開始序貫(Sequential)模型

from keras.models import Sequential
from keras.layers import Dense, Activation


from IPython.display import SVG
from keras.utils.vis_utils import model_to_dot
import pandas as pd
import matplotlib.pyplot as plt
# 定義模型
model = Sequential()

model.add(Dense(32, input_shape=(784,)))
model.add(Activation('relu'))
model.add(Dense(10))
model.add(Activation('softmax'))

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

model.summary()
SVG(model_to_dot(model,show_shapes=True).create(prog='dot', format='svg'))

Layer (type) Output Shape Param #

dense_9 (Dense) (None, 32) 25120


activation_6 (Activation) (None, 32) 0


dense_10 (Dense) (None, 10) 330


activation_7 (Activation) (None, 10) 0

Total params: 25,450
Trainable params: 25,450
Non-trainable params: 0

模型
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 函數式(Functional)模型 Keras函數式模型接口是用戶定義多輸出模型、非循環有向模型或具有共享層的模型...
    gaoshine閱讀 4,212評論 0 3
  • 摘要:在深度學習之前已經有很多生成模型,但苦于生成模型難以描述難以建模,科研人員遇到了很多挑戰,而深度學習的出現幫...
    肆虐的悲傷閱讀 11,386評論 1 21
  • Keras 源碼分析 此文檔中,凡代碼里用pass,均系省略源碼以便閱讀,起“本枝百世”之用。此注明者,乃pass...
    yangminz閱讀 31,865評論 5 34
  • iOS當中函數式編程是通過Block來實現的,前些天看到一段代碼,目的是改造UIButton來實現通過Block來...
    飛到哪閱讀 671評論 0 1
  • 昨天在新聞上看到你不慎掉入40米深的井底,心突然就被揪起來了。 事情已經發生了,現在追責已經沒有必要了,只希望你能...
    恕媽閱讀 192評論 0 1