Keras序列模型学习
轉(zhuǎn)自:https://keras.io/zh/getting-started/sequential-model-guide/
1.順序模型是多個網(wǎng)絡(luò)層的線性堆疊。
你可以通過將網(wǎng)絡(luò)層實例的列表傳遞給?Sequential?的構(gòu)造器,來創(chuàng)建一個?Sequential?模型:
from keras.models import Sequential from keras.layers import Dense, Activationmodel = Sequential([Dense(32, input_shape=(784,)),Activation('relu'),Dense(10),Activation('softmax'), ]) 或使用add添加 model = Sequential() model.add(Dense(32, input_dim=784)) model.add(Activation('relu'))?然后發(fā)現(xiàn),這樣也行:
mo=Sequential([Dense(32,input_dim=784,activation="relu"),Dense(5,activation="softmax")])?
?//Dense就是有單元數(shù)、輸入維度(只在第一層的時候有,之后會自動計算)。
?指定輸入尺寸:
- 傳遞一個?input_shape?參數(shù)給第一層。它是一個表示尺寸的元組 (一個整數(shù)或?None?的元組,其中?None?表示可能為任何正整數(shù))。在?input_shape?中不包含數(shù)據(jù)的 batch 大小。
?
?
model = Sequential() model.add(Dense(32, input_shape=(784,))) 等價于 model = Sequential() model.add(Dense(32, input_dim=784))?
//這個input_dim應(yīng)該是一個隱藏參數(shù)。
2.模型編譯
# try using different optimizers and different optimizer configs model.compile('adam', 'binary_crossentropy', metrics=['accuracy'])?
- 優(yōu)化器 optimizer。它可以是現(xiàn)有優(yōu)化器的字符串標(biāo)識符,如?rmsprop?或?adagrad,也可以是 Optimizer 類的實例。詳見:optimizers。
- 損失函數(shù) loss,模型試圖最小化的目標(biāo)函數(shù)。它可以是現(xiàn)有損失函數(shù)的字符串標(biāo)識符,如?categorical_crossentropy?或?mse,也可以是一個目標(biāo)函數(shù)。詳見:losses。
- 評估標(biāo)準(zhǔn) metrics。對于任何分類問題,你都希望將其設(shè)置為?metrics = ['accuracy']。評估標(biāo)準(zhǔn)可以是現(xiàn)有的標(biāo)準(zhǔn)的字符串標(biāo)識符,也可以是自定義的評估標(biāo)準(zhǔn)函數(shù)。
?
//上邊這個給出的例子不錯的。
3.模型訓(xùn)練
fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None,shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)
?
以給定數(shù)量的輪次(數(shù)據(jù)集上的迭代)訓(xùn)練模型。
參數(shù)
- x: 訓(xùn)練數(shù)據(jù)的 Numpy 數(shù)組(如果模型只有一個輸入), 或者是 Numpy 數(shù)組的列表(如果模型有多個輸入)。 如果模型中的輸入層被命名,你也可以傳遞一個字典,將輸入層名稱映射到 Numpy 數(shù)組。 如果從本地框架張量饋送(例如 TensorFlow 數(shù)據(jù)張量)數(shù)據(jù),x?可以是?None(默認(rèn))。
- y: 目標(biāo)(標(biāo)簽)數(shù)據(jù)的 Numpy 數(shù)組(如果模型只有一個輸出), 或者是 Numpy 數(shù)組的列表(如果模型有多個輸出)。 如果模型中的輸出層被命名,你也可以傳遞一個字典,將輸出層名稱映射到 Numpy 數(shù)組。 如果從本地框架張量饋送(例如 TensorFlow 數(shù)據(jù)張量)數(shù)據(jù),y 可以是?None(默認(rèn))。
- batch_size: 整數(shù)或?None。每次梯度更新的樣本數(shù)。如果未指定,默認(rèn)為 32。
- epochs: 整數(shù)。訓(xùn)練模型迭代輪次。一個輪次是在整個?x?和?y?上的一輪迭代。 請注意,與?initial_epoch?一起,epochs?被理解為 「最終輪次」。模型并不是訓(xùn)練了?epochs?輪,而是到第?epochs?輪停止訓(xùn)練。
- verbose: 0, 1 或 2。日志顯示模式。 0 = 安靜模式, 1 = 進(jìn)度條, 2 = 每輪一行。
- callbacks: 一系列的?keras.callbacks.Callback?實例。一系列可以在訓(xùn)練時使用的回調(diào)函數(shù)。 詳見?callbacks。
- validation_split: 0 和 1 之間的浮點數(shù)。用作驗證集的訓(xùn)練數(shù)據(jù)的比例。 模型將分出一部分不會被訓(xùn)練的驗證數(shù)據(jù),并將在每一輪結(jié)束時評估這些驗證數(shù)據(jù)的誤差和任何其他模型指標(biāo)。 驗證數(shù)據(jù)是混洗之前?x?和y?數(shù)據(jù)的最后一部分樣本中。
- validation_data: 元組?(x_val,y_val)?或元組?(x_val,y_val,val_sample_weights), 用來評估損失,以及在每輪結(jié)束時的任何模型度量指標(biāo)。 模型將不會在這個數(shù)據(jù)上進(jìn)行訓(xùn)練。這個參數(shù)會覆蓋?validation_split。
- shuffle: 布爾值(是否在每輪迭代之前混洗數(shù)據(jù))或者 字符串 (batch)。?batch?是處理 HDF5 數(shù)據(jù)限制的特殊選項,它對一個 batch 內(nèi)部的數(shù)據(jù)進(jìn)行混洗。 當(dāng)?steps_per_epoch?非?None?時,這個參數(shù)無效。
- class_weight: 可選的字典,用來映射類索引(整數(shù))到權(quán)重(浮點)值,用于加權(quán)損失函數(shù)(僅在訓(xùn)練期間)。 這可能有助于告訴模型 「更多關(guān)注」來自代表性不足的類的樣本。
- sample_weight: 訓(xùn)練樣本的可選 Numpy 權(quán)重數(shù)組,用于對損失函數(shù)進(jìn)行加權(quán)(僅在訓(xùn)練期間)。 您可以傳遞與輸入樣本長度相同的平坦(1D)Numpy 數(shù)組(權(quán)重和樣本之間的 1:1 映射), 或者在時序數(shù)據(jù)的情況下,可以傳遞尺寸為?(samples, sequence_length)?的 2D 數(shù)組,以對每個樣本的每個時間步施加不同的權(quán)重。 在這種情況下,你應(yīng)該確保在?compile()?中指定?sample_weight_mode="temporal"。
- initial_epoch: 整數(shù)。開始訓(xùn)練的輪次(有助于恢復(fù)之前的訓(xùn)練)。
- steps_per_epoch: 整數(shù)或?None。 在聲明一個輪次完成并開始下一個輪次之前的總步數(shù)(樣品批次)。 使用 TensorFlow 數(shù)據(jù)張量等輸入張量進(jìn)行訓(xùn)練時,默認(rèn)值?None?等于數(shù)據(jù)集中樣本的數(shù)量除以 batch 的大小,如果無法確定,則為 1。
- validation_steps: 只有在指定了?steps_per_epoch?時才有用。停止前要驗證的總步數(shù)(批次樣本)。
?
返回
一個?History?對象。其?History.history?屬性是連續(xù) epoch 訓(xùn)練損失和評估值,以及驗證集損失和評估值的記錄(如果適用)。
4.模型測試
evaluate(x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)在測試模式下返回模型的誤差值和評估標(biāo)準(zhǔn)值。
計算是分批進(jìn)行的。
- batch_size: 整數(shù)或?None。每次評估的樣本數(shù)。如果未指定,默認(rèn)為 32。
- steps: 整數(shù)或?None。 聲明評估結(jié)束之前的總步數(shù)(批次樣本)。默認(rèn)值?None。
返回
標(biāo)量測試誤差(如果模型只有一個輸出且沒有評估標(biāo)準(zhǔn)) 或標(biāo)量列表(如果模型具有多個輸出 和/或 評估指標(biāo))。 屬性?model.metrics_names?將提供標(biāo)量輸出的顯示標(biāo)簽。
predict(x, batch_size=None, verbose=0, steps=None)?
返回
預(yù)測的 Numpy 數(shù)組(或數(shù)組列表)。
train_on_batch(x, y, sample_weight=None, class_weight=None)?
運(yùn)行一批樣品的單次梯度更新。
返回
標(biāo)量訓(xùn)練誤差(如果模型只有一個輸入且沒有評估標(biāo)準(zhǔn)), 或者標(biāo)量的列表(如果模型有多個輸出 和/或 評估標(biāo)準(zhǔn))。 屬性?model.metrics_names?將提供標(biāo)量輸出的顯示標(biāo)簽。
test_on_batch(x, y, sample_weight=None)?
返回
標(biāo)量測試誤差(如果模型只有一個輸入且沒有評估標(biāo)準(zhǔn)), 或者標(biāo)量的列表(如果模型有多個輸出 和/或 評估標(biāo)準(zhǔn))。 屬性?model.metrics_names?將提供標(biāo)量輸出的顯示標(biāo)簽。
predict_on_batch(x)返回一批樣本的模型預(yù)測值。
返回
預(yù)測值的 Numpy 數(shù)組(或數(shù)組列表)。
5.總之
官方文檔里的內(nèi)容是很全的,需要什么參數(shù)設(shè)置就可以了。
?
轉(zhuǎn)載于:https://www.cnblogs.com/BlueBlueSea/p/10672880.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Keras序列模型学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重载(初学)
- 下一篇: 006-筛选分类排序搜索查找Filter