日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

模型訓練

更新時間:

模型訓練 API 與 tf.keras.Model 模塊提供的 API 基本一致,關于 tf.keras.Model 模塊的更多信息請參見 tf.keras

重要

本文涉及 API 中所有的占位符,例如"$df0",必須包含單引號或雙引號。

模型訓練 API 說明

模型訓練 API 的使用方法如下:

  1. 繼承 JupiterKerasModel 后,通過定義 build 方法自定義模型。build 函數接收一個 input_shape 參數作為模型輸入層的 shape,以輸出一個 keras.Model 實例。

  2. 提供以下信息,完成實例化自定義模型:

    • uid:模型 ID。

      build_method 支持以下三種輸入:

      • from_server

        要求所有 Client 端從 Server 端獲取并加載已編譯好的模型,從而使所有參與方的初始狀態保持一致。

      • from_local

        使用本地訓練后的模型,要求 file_uri 參數指定的路徑可以獲取以 checkpoint 文件夾形式存在的模型。

      • None

        使用 build 方法創建模型,并且不進行同步操作。

    • file_uri:模型保存路徑。

    • input_shape:輸入形式。

    • build_method:構建方法。

  3. 編譯模型。此處接受的參數類似 keras,但新增了一個 strategy 參數,該參數接受一個 fascia.strategy.BaseKerasStrategy 的子類,或者是預定義的字符串,目前支持以下兩種策略:

    • fedavg-w

    • fedavg-grad

  4. 訓練模型。關于此處接受的參數及類型,請參見本節 參數model.fit 參數說明。

  5. 使用 model.save() 保存模型,該方法接受 saved_path 參數作為保存路徑。當不指定該參數時,保存路徑由實例化模型時輸入的 file_uri 參數決定。

模型訓練代碼示例

from typing import Union, Tuple, Dict
import tensorflow as tf
from tensorflow import keras
from tensorflow.python.keras import Model
from fascia.biz.model import JupiterKerasModel
from fascia.biz.summary import summary
from fascia.biz.api.dataframe import read_fed_table

roche = read_fed_table("$df0").values()
train_x, train_y = roche[:, 1:], roche[:, 0]
summary.schema(train_x)
summary.schema(train_y)

class CustomKerasModel(JupiterKerasModel):
    def build(self, input_shape) -> Union[Model, Tuple[Model, Dict]]:
        model = tf.keras.Sequential(
            [
                tf.keras.layers.Dense(64, activation="relu", input_shape=(72,)), 
                tf.keras.layers.Dense(32, activation="relu"),
                tf.keras.layers.Dense(1, activation='sigmoid'),
            ]
        )
        return model
model = CustomKerasModel(uid='roche_fedavg', file_uri="$model", input_shape=(72,))

# Compile model with FedAVG strategy (weight aggregation)
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.01),
              loss=tf.keras.losses.BinaryCrossentropy(),
              metrics=[tf.metrics.BinaryAccuracy(),
                       tf.keras.metrics.AUC(), 
                       tf.keras.metrics.Precision(), 
                       tf.keras.metrics.Recall()], 
                       strategy='fedavg-w') #tf.metrics.BinaryAccuracy(threshold=0.5),

# Fit model
model.fit(train_x, train_y, batch_size=256, epochs=10, validation_split=0.1, aggregate_freq=1)
model.save()

參數

  • train_x:特征,接受 FedNdArray 或者 "$df0" 形式的占位符。

  • train_y:標簽,接受 FedNdArray 或者 "$df0" 形式的占位符。

  • batch_size:批處理大小,接受整數或類似 {'party_a': 32, 'party_b': 64} 格式的字段,注意該設置也會影響驗證集。

  • epochs:訓練回合數。

  • verbose:是否在過程中顯示性能指標。

  • callbacks:類似 Keras.Callback

  • validation_split:驗證集的切分比例。

  • validation_data:驗證集數據,當提供該數據集時,validation_split 會被忽略。

  • validation_freq:驗證頻率。

  • shuffle:是否對數據進行 shuffle

  • sample_weightsample 權值,含義類似 keras

  • steps_per_epoch:每個 epoch 中執行的步數,當提供該參數時,batch_size參數會被忽略。

  • aggregate_freq:聚合頻率。

  • trainable_parties:指定使用訓練的 parties。指定為類似['party_a', 'party_b']時,表示使用指定的參與方參與聚合。默認為 None,即表示使用所有的 parties。

返回值定義

history:訓練結果的歷史記錄,包括全局聚合的性能指標、本地訓練集性能指標和驗證集性能指標。

History 結果示例

{
  "alice": {"loss": [0.14, 0.12], "accuracy": [0.85, 0.87]},
  "bob": {"loss": [0.14, 0.12], "accuracy": [0.85, 0.87]},
  "__global__": {"loss": [0.14, 0.12], "accuracy": [0.85, 0.87]},
}