Keras學(xué)習(xí)
Keras學(xué)習(xí)一、Keras Sequential順序模型1.模型構(gòu)建1)順序模型2)函數(shù)式模型2.模型編譯3.模型訓(xùn)練4.模型評估1)evaluate #評估模型,返回?cái)?shù)據(jù)的相關(guān)誤差2)predict #為輸入的樣本生成輸出預(yù)測
一、Keras Sequential順序模型
1.模型構(gòu)建
用keras定義的網(wǎng)絡(luò)模型有兩種方式:
-
sequential 順序模型
-
keras 函數(shù)式 API模型
1)順序模型
from keras.models import Sequential
import keras
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
?
model = Sequential([keras.layers.Dense(32, input_shape=(784, )),
keras.layers.Activation('relu'),
keras.layers.Dense(10),
keras.layers.Activation('softmax')])
# 等價于以下方法構(gòu)建的順序模型
model = Sequential()
model.add(keras.layers.Dense(32, input_shape=(784, ), activation='relu'))
# 或者為model.add(keras.layers.Dense(32, input_dim=784, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))
其中Dense的幾個參數(shù):
-
activation: 激活函數(shù)
-
kernel_initializer和bias_initializer: 權(quán)重和偏置項(xiàng)的初始化方案
-
kernel_regularizer.l1/l2和bias_regularizer.l1/l2: 權(quán)重和偏置項(xiàng)的正則方案,L1或L2
2)函數(shù)式模型
# 函數(shù)式模型
a = keras.layers.Input(shape=(32, ))
b = keras.layers.Dense(32)(a)
c = keras.layers.Dense(10)(b)
model = keras.models.Model(inputs=[a, b], outputs=c)
2.模型編譯
無論是對怎樣的問題,我們都通過compile()的方法
其中的一些參數(shù):
-
optimizer #優(yōu)化器,利用其性質(zhì),找到使損失函數(shù)值最小的最優(yōu)值
-
loss #損失函數(shù),模型視圖最小化的目標(biāo)函數(shù)
-
metric #評判標(biāo)準(zhǔn),對于分類問題,一般我們定義為accuracy,當(dāng)然,也可以變?yōu)槠渌?/span>
# 模型編譯
# 多分類問題
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
?
# 二分類問題
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
?
# 均方誤差回歸問題
model.compile(optimizer='rmsprop',
loss='mse')
?
# 自定義評估標(biāo)準(zhǔn)函數(shù)
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])
可用的優(yōu)化器:
在模型訓(xùn)練后,如果想觀察其網(wǎng)絡(luò)結(jié)構(gòu),我們可以用model.summary(),并用print(model.output_shape)打印模型的輸出。
3.模型訓(xùn)練
上面介紹的兩種模型,無論是何種模型,我們在訓(xùn)練其模型時都是使用fit()函數(shù)進(jìn)行訓(xùn)練
# 模型訓(xùn)練
model.fit(data, labels, epochs=5, batch_size=32)
4.模型評估
1)evaluate #評估模型,返回?cái)?shù)據(jù)的相關(guān)誤差
# 模型評估
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=100, verbose=1, sample_weight=None, steps=None)
其中參數(shù)介紹:
-
x_train #測試數(shù)據(jù)的numpy數(shù)組
-
y_train #測試數(shù)據(jù)的標(biāo)簽的numpy數(shù)組或列表
-
batch_size #表示每次評估的樣本數(shù),數(shù)據(jù)類型必須是整形或者為空,空則默認(rèn)32
-
verbose #0或1,0就是安靜模式,1就是進(jìn)度條模式
-
steps #聲明評估結(jié)束之前的總步數(shù),默認(rèn)為空
2)predict #為輸入的樣本生成輸出預(yù)測
classes = model.predict(x_test, batch_size=100, verbose=0, steps=None)
其參數(shù)與上述參數(shù)差不多,這里不細(xì)講。
浙公網(wǎng)安備 33010602011771號