模型评估

更新时间:

本文介绍了模型评估的 API 及示例。

重要

本文涉及 API 中所有的占位符,例如"$df0",必须包含单引号或双引号。

模型评估 API 代码示例

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.api.dataframe import read_fed_table


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

model = JupiterKerasModel(uid='roche-eval', file_uri="$modelName0", input_shape=(72,), build_method='from_local')
# 注意此处仍需要编译才能使用联邦全局视角的模型
model.compile(loss=tf.keras.losses.BinaryCrossentropy(), optimizer='adam', 
              metrics=[tf.metrics.BinaryAccuracy(), 
                       tf.keras.metrics.AUC(), 
                       tf.keras.metrics.Precision(), 
                       tf.keras.metrics.Recall()], 
              strategy='fedavg-w')
eval_hist = model.evaluate(test_x, test_y, batch_size=8)

参数

以下是对 model.evaluate 参数的说明:

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

  • test_y:标签,接受 FedNdArray 或者 "$df0" 形式的占位符。 但 test_xFedDataset 时,无需提供 test_y 参数。

  • batch_size:批处理大小,接受整数或类似 {'party_a': 32, 'party_b': 64} 格式的字段,注意该设置也会影响验证集。

  • sample_weightsample 权值,含义类似 keras。

  • verbose:是否在过程中显示性能指标。

返回值定义

history:训练结果的历史记录,包括全局聚合的性能指标、本地训练集性能指标和验证集性能指标。

History 结果示例

{
 'alice': [0.2467046082019806, 1.0],
 'bob': [0.32576555013656616, 1.0],
 '__name__': ['loss', 'accuracy'],
 '__global__': [0.28623506, 1.0]
}