【Keras】学习笔记(二)
文章目錄
- 一、Keras 模型
- 1、共同的方法和屬性
- 2、Model 類繼承
- 二、Sequential 模型 API
- 1、compile():配置訓(xùn)練模型
- 2、fit():訓(xùn)練模型
- 3、evaluate():模型評估
- 4、predict():預(yù)測
- 5、train_on_batch()
- 6、test_on_batch()
- 7、predict_on_batch()
- 8、fit_generator()
- 9、evaluate_generator
- 10、predict_generator
- 11、get_layer()
- 三、Model 類(函數(shù)式 API)
- 1、概述
- 2、Model 類模型方法
- (1)配置訓(xùn)練模型
- (2)模型訓(xùn)練、評估、預(yù)測
- (3)batch上的模型訓(xùn)練、評估、預(yù)測
- (4)生成器上的訓(xùn)練、評估、預(yù)測
- (5)獲取某網(wǎng)絡(luò)層
一、Keras 模型
兩類主要的模型:Sequential 順序模型 和 使用函數(shù)式 API 的 Model 類模型。
1、共同的方法和屬性
- model.layers:包含模型網(wǎng)絡(luò)層的展平列表。
- model.inputs:模型輸入張量的列表。
- model.outputs:模型輸出張量的列表。
- model.summary():打印出模型概述信息。 它是 utils.print_summary 的簡捷調(diào)用。
- model.get_config():返回包含模型配置信息的字典。通過以下代碼,就可以根據(jù)這些配置信息重新實例化模型:config = model.get_config() model = Model.from_config(config) # 或者,對于 Sequential: model = Sequential.from_config(config)
- model.get_weights():返回模型中所有權(quán)重張量的列表,類型為 Numpy 數(shù)組。
- model.set_weights(weights):從 Numpy 數(shù)組中為模型設(shè)置權(quán)重。列表中的數(shù)組必須與 get_weights() 返回的權(quán)重具有相同的尺寸。
- model.to_json():以 JSON 字符串的形式返回模型的表示(不包括權(quán)重,僅包含結(jié)構(gòu))??赏ㄟ^以下方式從 JSON 字符串重新實例化同一模型(使用重新初始化的權(quán)重):from keras.models import model_from_jsonjson_string = model.to_json() model = model_from_json(json_string)
- model.to_yaml():以 YAML 字符串的形式返回模型的表示(不包括權(quán)重,僅包含結(jié)構(gòu))**??赏ㄟ^以下代碼,從 YAML 字符串中重新實例化相同的模型(使用重新初始化的權(quán)重):from keras.models import model_from_yamlyaml_string = model.to_yaml() model = model_from_yaml(yaml_string)
- model.save_weights(filepath):將模型權(quán)重存儲為 HDF5 文件。
- model.load_weights(filepath, by_name=False):從 HDF5 文件(由 save_weights 創(chuàng)建)中加載權(quán)重。默認情況下,模型的結(jié)構(gòu)應(yīng)該是不變的。 如果想將權(quán)重載入不同的模型(部分層相同), 設(shè)置 by_name=True 來載入那些名字相同的層的權(quán)重。
2、Model 類繼承
自定義模型:繼承 Model 類并在 call 方法中實現(xiàn)你自己的前向傳播,以創(chuàng)建自定義的模型。
示例:用 Model 類繼承寫的簡單的多層感知器的例子。
- 網(wǎng)絡(luò)層定義在 __init__(self, ...) 中指定;
- 前向傳播在 call(self, inputs) 中指定:可以指定自定義的損失函數(shù),通過調(diào)用 self.add_loss(loss_tensor) 實現(xiàn)。
在類繼承模型中,模型的拓撲結(jié)構(gòu)是由 Python 代碼定義的(而不是網(wǎng)絡(luò)層的靜態(tài)圖)。這意味著該模型的拓撲結(jié)構(gòu)不能被檢查或序列化。因此,以下方法和屬性不適用于類繼承模型:
- model.inputs 和 model.outputs。
- model.to_yaml() 和 model.to_json()。
- model.get_config() 和 model.save()。
關(guān)鍵點:為每個任務(wù)使用正確的 API。Model 類繼承 API 可以為實現(xiàn)復(fù)雜模型提供更大的靈活性,但它需要付出代價(比如缺失的特性):它更冗長,更復(fù)雜,并且有更多的用戶錯誤機會。如果可能的話,盡可能使用函數(shù)式 API,這對用戶更友好。
二、Sequential 模型 API
1、compile():配置訓(xùn)練模型
compile(optimizer, loss=None, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)參數(shù):
- optimizer: 字符串 (優(yōu)化器名)或者優(yōu)化器對象。詳見 optimizers。
- loss: 字符串 (目標函數(shù)名)或目標函數(shù)。詳見 losses。
- 多輸出模型:通過傳遞損失函數(shù)的字典或列表,在每個輸出上使用不同的損失。模型將最小化的損失值將是所有單個損失的總和。
- metrics: 在訓(xùn)練和測試期間的模型評估標準。通常你會使用 metrics = ['accuracy']。
- 對于多輸出模型的不同輸出指定不同的評估標準:傳遞一個字典,eg:metrics = {'output_a':'accuracy'}。
- loss_weights: 指定標量系數(shù)(Python浮點數(shù))的可選列表或字典,用于加權(quán)不同模型輸出的損失貢獻。
- 模型將要最小化的損失值將是所有單個損失的加權(quán)和,由 loss_weights 系數(shù)加權(quán)。
- 如果是列表,則期望與模型的輸出具有 1:1 映射。 如果是張量,則期望將輸出名稱(字符串)映射到標量系數(shù)。
- sample_weight_mode:
- 若執(zhí)行按時間步采樣權(quán)重(2D 權(quán)重),則設(shè)置為 temporal。
- 默認為 None,為采樣權(quán)重(1D)。
- 如果模型有多個輸出,則可以通過傳遞 mode 的字典或列表,以在每個輸出上使用不同的 sample_weight_mode。
- weighted_metrics:在訓(xùn)練和測試期間,由 sample_weight 或 class_weight 評估和加權(quán)的度量標準列表。
- target_tensors:默認情況下,Keras 將為模型的目標創(chuàng)建一個占位符,在訓(xùn)練過程中將使用目標數(shù)據(jù)。相反,如果你想使用自己的目標張量(反過來說,Keras 在訓(xùn)練期間不會載入這些目標張量的外部 Numpy 數(shù)據(jù)),您可以通過 target_tensors 參數(shù)指定它們。它應(yīng)該是單個張量(對于單輸出 Sequential 模型)。
- **kwargs:
- 當使用 Theano/CNTK 后端時,這些參數(shù)被傳入 K.function。
- 當使用 TensorFlow 后端時,這些參數(shù)被傳遞到 tf.Session.run。
異常
- ValueError:如果 optimizer, loss, metrics 或 sample_weight_mode 這些參數(shù)不合法。
2、fit():訓(xùn)練模型
以固定數(shù)量的輪次(數(shù)據(jù)集上的迭代)訓(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ù)
- x: 訓(xùn)練數(shù)據(jù)的 Numpy 數(shù)組。
- 如果模型中的輸入層被命名,則可傳遞一個字典,將輸入層名稱映射到 Numpy 數(shù)組。
- 如果從本地框架張量饋送(例如 TensorFlow 數(shù)據(jù)張量)數(shù)據(jù),x 可以是 None(默認)。
- y: 標簽數(shù)據(jù)的 Numpy 數(shù)組。
- 如果模型中的輸出層被命名,你也可以傳遞一個字典,將輸出層名稱映射到 Numpy 數(shù)組。
- 如果從本地框架張量饋送(例如 TensorFlow 數(shù)據(jù)張量)數(shù)據(jù),y 可以是 None(默認)。
- batch_size: 整數(shù)或 None。每次提度更新的樣本數(shù)。如果未指定,默認為 32.
- epochs: 整數(shù)。訓(xùn)練模型迭代輪次。一個輪次是在整個 x 或 y 上的一輪迭代。請注意,與 initial_epoch 一起,epochs 被理解為 「最終輪次」。模型并不是訓(xùn)練了 epochs 輪,而是到第 epochs 輪停止訓(xùn)練。
- verbose: 0, 1 或 2。日志顯示模式。 0 = 安靜模式, 1 = 進度條, 2 = 每輪一行。
- callbacks: 一系列的 keras.callbacks.Callback 實例。一系列可以在訓(xùn)練時使用的回調(diào)函數(shù)。詳見 callbacks。
- validation_split: 用作驗證集的訓(xùn)練數(shù)據(jù)的比例,范圍:[0,1]。
- validation_data: 元組 (x_val, y_val) 或元組 (x_val, y_val, val_sample_weights),用來評估損失,以及在每輪結(jié)束時的任何模型度量指標。模型將不會在這個數(shù)據(jù)上進行訓(xùn)練。這個參數(shù)會覆蓋 validation_split。
- shuffle: 布爾值(是否在每輪迭代之前混洗數(shù)據(jù))或者 字符串 (batch)。
- batch 是處理 HDF5 數(shù)據(jù)限制的特殊選項,它對一個 batch 內(nèi)部的數(shù)據(jù)進行混洗。
- 當 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ù)進行加權(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: 開始訓(xùn)練的輪次(有助于恢復(fù)之前的訓(xùn)練)。
- steps_per_epoch: 在聲明一個輪次完成并開始下一個輪次之前的總步數(shù)(樣品批次)。
- 使用 TensorFlow 數(shù)據(jù)張量等輸入張量進行訓(xùn)練時,默認值 None 等于數(shù)據(jù)集中樣本的數(shù)量除以 batch 的大小,如果無法確定,則為 1。
- validation_steps: 只有在指定了 steps_per_epoch 時才有用。停止前要驗證的總步數(shù)(批次樣本)。
返回:一個 History 對象。
- 其 History.history 屬性是連續(xù) epoch 訓(xùn)練損失和評估值,以及驗證集損失和評估值的記錄(如果適用)。
異常
- RuntimeError: 如果模型從未編譯。
- ValueError: 在提供的輸入數(shù)據(jù)與模型期望的不匹配的情況下。
3、evaluate():模型評估
在測試模式,返回誤差值和評估標準值。 計算逐批次進行。
evaluate(x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)參數(shù):
- x: 訓(xùn)練數(shù)據(jù)的 Numpy 數(shù)組。 如果模型中的輸入層被命名,你也可以傳遞一個字典,將輸入層名稱映射到 Numpy 數(shù)組。 如果從本地框架張量饋送(例如 TensorFlow 數(shù)據(jù)張量)數(shù)據(jù),x 可以是 None(默認)。
- y: 目標(標簽)數(shù)據(jù)的 Numpy 數(shù)組。 如果模型中的輸出層被命名,你也可以傳遞一個字典,將輸出層名稱映射到 Numpy 數(shù)組。 如果從本地框架張量饋送(例如 TensorFlow 數(shù)據(jù)張量)數(shù)據(jù),y 可以是 None(默認)。
- batch_size: 整數(shù)或 None。每次提度更新的樣本數(shù)。如果未指定,默認為 32.
- verbose: 0, 1。日志顯示模式。0 = 安靜模式, 1 = 進度條。
- sample_weight: 訓(xùn)練樣本的可選 Numpy 權(quán)重數(shù)組,用于對損失函數(shù)進行加權(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"。
- steps: 整數(shù)或 None。 聲明評估結(jié)束之前的總步數(shù)(批次樣本)。默認值 None。
返回
- 標量測試誤差(如果模型只有單個輸出且沒有評估指標)或標量列表(如果模型具有多個輸出和/或指標)。 屬性 model.metrics_names 將提供標量輸出的顯示標簽。
4、predict():預(yù)測
為輸入樣本生成輸出預(yù)測。
predict(x, batch_size=None, verbose=0, steps=None)參數(shù)
- x: 輸入數(shù)據(jù),Numpy 數(shù)組(或者如果模型有多個輸入,則為 Numpy 數(shù)組列表)。
- batch_size: 整數(shù)。如未指定,默認為 32。
- verbose: 日志顯示模式,0 或 1。
- steps: 聲明預(yù)測結(jié)束之前的總步數(shù)(批次樣本)。默認值 None。
返回:預(yù)測的 Numpy 數(shù)組。
異常
- ValueError: 如果提供的輸入數(shù)據(jù)與模型的期望數(shù)據(jù)不匹配,或者有狀態(tài)模型收到的數(shù)量不是批量大小的倍數(shù)。
5、train_on_batch()
batch 的單次梯度更新。
train_on_batch(x, y, sample_weight=None, class_weight=None)參數(shù):
- x: 訓(xùn)練數(shù)據(jù)的 Numpy 數(shù)組,如果模型具有多個輸入,則為 Numpy 數(shù)組列表。如果模型中的所有輸入都已命名,你還可以傳入輸入名稱到 Numpy 數(shù)組的映射字典。
- y: 目標數(shù)據(jù)的 Numpy 數(shù)組,如果模型具有多個輸入,則為 Numpy 數(shù)組列表。如果模型中的所有輸出都已命名,你還可以傳入輸出名稱到 Numpy 數(shù)組的映射字典。
- sample_weight: 訓(xùn)練樣本的可選 Numpy 權(quán)重數(shù)組,用于對損失函數(shù)進行加權(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”。
- class_weight: 可選的字典,用來映射類索引(整數(shù))到權(quán)重(浮點)值,用于加權(quán)損失函數(shù)(僅在訓(xùn)練期間)。這可能有助于告訴模型 「更多關(guān)注」來自代表性不足的類的樣本。
返回:
- 標量訓(xùn)練誤差(如果模型只有單個輸出且沒有評估指標)或標量列表(如果模型具有多個輸出和/或指標)。 屬性 model.metrics_names 將提供標量輸出的顯示標簽。
6、test_on_batch()
在batch上評估模型。
test_on_batch(x, y, sample_weight=None)參數(shù):
- x: 訓(xùn)練數(shù)據(jù)的 Numpy 數(shù)組,如果模型具有多個輸入,則為 Numpy 數(shù)組列表。如果模型中的所有輸入都已命名,你還可以傳入輸入名稱到 Numpy 數(shù)組的映射字典。
- y: 目標數(shù)據(jù)的 Numpy 數(shù)組,如果模型具有多個輸入,則為 Numpy 數(shù)組列表。如果模型中的所有輸出都已命名,你還可以傳入輸出名稱到 Numpy 數(shù)組的映射字典。
- sample_weight: 訓(xùn)練樣本的可選 Numpy 權(quán)重數(shù)組,用于對損失函數(shù)進行加權(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”。
返回:
- 標量測試誤差(如果模型只有單個輸出且沒有評估指標)或標量列表(如果模型具有多個輸出和/或指標)。 屬性 model.metrics_names 將提供標量輸出的顯示標簽。
7、predict_on_batch()
返回batch上的模型預(yù)測值。
predict_on_batch(x)參數(shù):
- x: 輸入數(shù)據(jù),Numpy 數(shù)組或列表(如果模型有多輸入)。
8、fit_generator()
使用 Python 生成器或 Sequence 實例逐批生成的數(shù)據(jù),按批次訓(xùn)練模型。 生成器與模型并行運行,以提高效率。
- keras.utils.Sequence 的使用可以保證數(shù)據(jù)的順序, 以及當 use_multiprocessing=True 時 ,保證每個輸入在每個 epoch 只使用一次。
- 例如,這可以讓你在 CPU 上對圖像進行實時數(shù)據(jù)增強,以在 GPU 上訓(xùn)練模型。
參數(shù):
- generator: 一個生成器或 Sequence (keras.utils.Sequence) 對象的實例,以避免在使用多進程時出現(xiàn)重復(fù)數(shù)據(jù)。 生成器的輸出應(yīng)該為以下之一:
- 一個 (inputs, targets) 元組;
- 一個 (inputs, targets, sample_weights) 元組。 這個元組(生成器的單個輸出)表示一個獨立批次。因此,此元組中的所有數(shù)組必須具有相同的長度(等于此批次的大小)。不同的批次可能具有不同的大小。例如,如果數(shù)據(jù)集的大小不能被批量大小整除,則最后一批時期通常小于其他批次。生成器將無限地在數(shù)據(jù)集上循環(huán)。當運行到第 steps_per_epoch 時,記一個 epoch 結(jié)束。
- steps_per_epoch: 整數(shù)。在聲明一個 epoch 完成并開始下一個 epoch 之前從 generator 產(chǎn)生的總步數(shù)(批次樣本)。它通常應(yīng)該等于你的數(shù)據(jù)集的樣本數(shù)量除以批量大小??蛇x參數(shù) Sequence:如果未指定,將使用 len(generator) 作為步數(shù)。
- epochs: 整數(shù),數(shù)據(jù)的迭代總輪數(shù)。一個 epoch 是對所提供的整個數(shù)據(jù)的一輪迭代,由 steps_per_epoch 所定義。請注意,與 initial_epoch 一起,參數(shù) epochs 應(yīng)被理解為 「最終輪數(shù)」。模型并不是訓(xùn)練了 epochs 輪,而是到第 epochs 輪停止訓(xùn)練。
- verbose: 日志顯示模式。0,1 或 2。0 = 安靜模式,1 = 進度條,2 = 每輪一行。
- callbacks: keras.callbacks.Callback 實例列表。在訓(xùn)練時調(diào)用的一系列回調(diào)。詳見 callbacks。
validation_data: 它可以是以下之一:
驗證數(shù)據(jù)的生成器或 Sequence 實例
一個 (inputs, targets) 元組
一個 (inputs, targets, sample_weights) 元組。 - validation_steps: 僅當 validation_data 是一個生成器時才可用。 每個 epoch 結(jié)束時驗證集生成器產(chǎn)生的步數(shù)。它通常應(yīng)該等于你的數(shù)據(jù)集的樣本數(shù)量除以批量大小。可選參數(shù) Sequence:如果未指定,將使用 len(generator) 作為步數(shù)。
- class_weight: 可選的字典,用來映射類索引(整數(shù))到權(quán)重(浮點)值,用于加權(quán)損失函數(shù)(僅在訓(xùn)練期間)。這可能有助于告訴模型 「更多關(guān)注」來自代表性不足的類的樣本。
max_queue_size: 整數(shù)。生成器隊列的最大尺寸。如果未指定,max_queue_size 將默認為 10。 - workers: 整數(shù)。使用基于進程的多線程時啟動的最大進程數(shù)。如果未指定,worker 將默認為 1。如果為 0,將在主線程上執(zhí)行生成器。
- use_multiprocessing: 如果 True,則使用基于進程的多線程。如果未指定,use_multiprocessing 將默認為 False。請注意,因為此實現(xiàn)依賴于多進程,所以不應(yīng)將不可傳遞的參數(shù)傳遞給生成器,因為它們不能被輕易地傳遞給子進程。
- shuffle: 布爾值。是否在每輪迭代之前打亂 batch 的順序。只能與 Sequence (keras.utils.Sequence) 實例同用。在 steps_per_epoch 不為 None 是無效果。
- initial_epoch: 整數(shù)。開始訓(xùn)練的輪次(有助于恢復(fù)之前的訓(xùn)練)。
示例:
def generate_arrays_from_file(path):while True:with open(path) as f:for line in f:# 從文件中的每一行生成輸入數(shù)據(jù)和標簽的 numpy 數(shù)組x1, x2, y = process_line(line)yield ({'input1':x1, 'input2':x2}, {'output':y})model.fit_generator(generate_arrays_from_file('/my_file.txt'),steps_per_epoch=10000, epochs=10)9、evaluate_generator
在數(shù)據(jù)生成器上評估模型。這個生成器應(yīng)該返回與 test_on_batch 所接收的同樣的數(shù)據(jù)。
evaluate_generator(generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0)參數(shù):
- generator: 返回批量輸入樣本的生成器,或 Sequence (keras.utils.Sequence) 對象的實例,以避免在使用多進程時出現(xiàn)重復(fù)數(shù)據(jù)。
- steps: 在停止之前,來自 generator 的總步數(shù) (樣本批次)。 可選參數(shù) Sequence:如果未指定,將使用 len(generator) 作為步數(shù)。
- max_queue_size: 生成器隊列的最大尺寸。
- workers: 整數(shù)。使用基于進程的多線程時啟動的最大進程數(shù)。如果未指定,worker 將默認為 1。如果為 0,將在主線程上執(zhí)行生成器。
- use_multiprocessing: 如果 True,則使用基于進程的多線程。 請注意,因為此實現(xiàn)依賴于多進程,所以不應(yīng)將不可傳遞的參數(shù)傳遞給生成器,因為它們不能被輕易地傳遞給子進程。
- verbose: 日志顯示模式, 0 或 1。
返回:
- 標量測試誤差(如果模型只有單個輸出且沒有評估指標)或標量列表(如果模型具有多個輸出和/或指標)。 屬性 model.metrics_names 將提供標量輸出的顯示標簽。
10、predict_generator
為來自數(shù)據(jù)生成器的輸入樣本生成預(yù)測,預(yù)測值的 Numpy 數(shù)組。這個生成器應(yīng)該返回與 predict_on_batch 所接收的同樣的數(shù)據(jù)。
predict_generator(generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0)參數(shù):
- generator: 返回批量輸入樣本的生成器,或 Sequence (keras.utils.Sequence) 對象的實例,以避免在使用多進程時出現(xiàn)重復(fù)數(shù)據(jù)。
- steps: 在停止之前,來自 generator 的總步數(shù) (樣本批次)。 可選參數(shù) Sequence:如果未指定,將使用 len(generator) 作為步數(shù)。
- max_queue_size: 生成器隊列的最大尺寸。
- workers: 整數(shù)。使用基于進程的多線程時啟動的最大進程數(shù)。如果未指定,worker 將默認為 1。如果為 0,將在主線程上執(zhí)行生成器。
- use_multiprocessing: 如果 True,則使用基于進程的多線程。 請注意,因為此實現(xiàn)依賴于多進程,所以不應(yīng)將不可傳遞的參數(shù)傳遞給生成器,因為它們不能被輕易地傳遞給子進程。
- verbose: 日志顯示模式, 0 或 1。
11、get_layer()
根據(jù)名稱(唯一)或索引值查找網(wǎng)絡(luò)層。 索引是基于水平圖遍歷的順序(自下而上)。
get_layer(name=None, index=None)參數(shù)
- name: 字符串,層的名字。
- index: 整數(shù),層的索引。
- 注意:如果同時提供了 name 和 index,則 index 將優(yōu)先。
返回:一個層實例。
三、Model 類(函數(shù)式 API)
1、概述
官方文檔:函數(shù)式 API
在函數(shù)式 API 中,給定一些輸入張量和輸出張量,可以通過以下方式實例化一個 Model:
- 示例1:這個模型將包含從 a 到 b 的計算的所有網(wǎng)絡(luò)層。
- 示例2:在多輸入或多輸出模型的情況下,可以使用列表。
2、Model 類模型方法
具體參數(shù)見上一節(jié)中的各函數(shù)的參數(shù) 或 官方文檔
(1)配置訓(xùn)練模型
compile:配置訓(xùn)練模型
- 定義:compile(optimizer, loss=None, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)
(2)模型訓(xùn)練、評估、預(yù)測
-
fit:以給定數(shù)量的輪次(數(shù)據(jù)集上的迭代)訓(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)
-
evaluate:在測試模式下返回模型的誤差值和評估標準值。
- 定義:evaluate(x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)
-
predict:為輸入樣本生成輸出預(yù)測。
- 定義:predict(x, batch_size=None, verbose=0, steps=None)
(3)batch上的模型訓(xùn)練、評估、預(yù)測
- train_on_batch:batch上的單次梯度更新。
- 定義:train_on_batch(x, y, sample_weight=None, class_weight=None)
- test_on_batch:batch上測試模型。
- 定義:test_on_batch(x, y, sample_weight=None)
- predict_on_batch:返回batch上的模型預(yù)測值
- 定義:predict_on_batch(x)
(4)生成器上的訓(xùn)練、評估、預(yù)測
- fit_generator
- 目的:使用 Python 生成器(或 Sequence 實例)逐批生成的數(shù)據(jù),按批次訓(xùn)練模型。
- 定義:fit_generator(generator, steps_per_epoch=None, epochs=1, verbose=1, callbacks=None, validation_data=None, validation_steps=None, class_weight=None, max_queue_size=10, workers=1, use_multiprocessing=False, shuffle=True, initial_epoch=0)
- evaluate_generator:在數(shù)據(jù)生成器上評估模型。
- 定義:evaluate_generator(generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0)
- predict_generator:為來自數(shù)據(jù)生成器的輸入樣本生成預(yù)測。
- 定義:predict_generator(generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0)
(5)獲取某網(wǎng)絡(luò)層
get_layer:根據(jù)名稱(唯一)或索引值查找網(wǎng)絡(luò)層,返回一個層實例。
- 定義:get_layer(self, name=None, index=None)
- 參數(shù):
- name: 字符串,層的名字。
- index: 整數(shù),層的索引。索引值來自于水平圖遍歷的順序(自下而上)。
- 注意:如果同時提供了 name 和 index,則 index 將優(yōu)先。
總結(jié)
以上是生活随笔為你收集整理的【Keras】学习笔记(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Keras】学习笔记(一)
- 下一篇: 典型分类器评价指标及实例