【问题标题】:Can I use class_weight in keras model in Tensorflow Federated Learning (TFF)我可以在 Tensorflow 联邦学习 (TFF) 的 keras 模型中使用 class_weight
【发布时间】:2020-08-22 18:17:48
【问题描述】:

我的数据集是类不平衡的,所以我想使用 class_weight 来启用分类器重权次要类。在一般情况下,我可以按如下方式分配班级权重:

weighted_history = weighted_model.fit(
    train_features,
    train_labels,
    batch_size=BATCH_SIZE,
    epochs=EPOCHS,
    callbacks=[early_stopping],
    validation_data=(val_features, val_labels),
    # The class weights go here
    class_weight=class_weight) 

有什么方法可以在 tensorflow 联邦学习中分配 class_weight 吗?我的联邦学习代码如下:

def create_keras_model(output_bias=None):
    return tf.keras.models.Sequential([
        tf.keras.layers.Dense(12, activation='relu', input_shape(5,)),
        tf.keras.layers.Dense(8, activation='relu'),
        tf.keras.layers.Dense(5, activation='relu'),
        tf.keras.layers.Dense(3, activation='relu'),
        tf.keras.layers.Dense(1, activation='sigmoid')])

def model_fn():
    keras_model = create_keras_model()
    return tff.learning.from_keras_model(
        keras_model,
        input_spec=preprocessed_example_dataset.element_spec,
        loss=tf.keras.losses.BinaryCrossentropy(),
        metrics=[tf.keras.metrics.BinaryAccuracy()])

【问题讨论】:

    标签: python tensorflow tensorflow-federated


    【解决方案1】:

    不直接。主要问题是tf.keras.Model.fit 方法在概念上没有映射到从分散数据进行训练的想法。

    如果您想在TFF 中进行这项工作,第一步是确定应该执行的算法是什么。据我所知,这没有一个明显的答案——例如,如果你没有直接访问数据的权限,你如何确定那些 class_weights 是什么?

    但是让我们假设您以某种方式获得了这些信息,并且只是想修改客户的本地培训程序。从examples/simple_fedavg 开始,实现它的方法是适当修改this loop 中梯度的计算方式。

    【讨论】:

    • 谢谢你的好点子。您如何评价 FL 模型?我将该模型与基于服务器的模型(相同的 keras 模型)进行比较。我应该从测试集中随机选择相同数量的客户端还是应该使用整个测试集?
    猜你喜欢
    • 2022-06-16
    • 1970-01-01
    • 2022-06-29
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多