做一個深度學習的項目,開始必須要搭建一個模型,我們通過代碼逐步了解keras的模型的搭建
深度學習模型
定義模型
序貫模型是多個網絡層的線性堆疊,也就是“一條路走到黑”。
- 可以通過向Sequential模型傳遞一個layer的list來構造該模型
- 也可以通過.add()方法一個個的將layer加入模型中
模型需要知道輸入數據的shape,因此,Sequential的第一層需要接受一個關于輸入數據shape的參數.
- 傳遞一個input_shape的關鍵字參數給第一層
- 有些2D層,如Dense,支持通過指定其輸入維度input_dim來隱含的指定輸入數據shape。
- 如果你需要為輸入指定一個固定大小的batch_size(常用于stateful RNN網絡),可以傳遞batch_size參數到一個層中,例如你想指定輸入張量的batch大小是32,數據shape是(6,8),則你需要傳遞batch_size=32和input_shape=(6,8)
編譯
在訓練模型之前,我們需要通過compile來對學習過程進行配置。compile接收三個參數:
- 優化器optimizer:該參數可指定為已預定義的優化器名,如rmsprop、adagrad,或一個Optimizer類的對象,詳情見optimizers
- 損失函數loss:該參數為模型試圖最小化的目標函數,它可為預定義的損失函數名,如categorical_crossentropy、mse,也可以為一個損失函數。詳情見losses
- 指標列表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
模型