KerasRegressor на Tensorflow-Federated

Я пытаюсь заставить мою модель KerasRegressor работать с фреймворком TFF. Но похоже, что "tff.learning.from_compiled_keras_model" не принимает его, верно? Моя главная цель - дифференцировать / оценить федерацию как по проблеме регрессии, так и по проблеме классификации.

Я пробовал "tf.keras.wrappers.scikit_learn.KerasRegressor" как средство для проблем регрессии, как показано ниже в коде.

Это моя соответствующая часть кода:

def create_SK_model():
    modelF = create_SGD_model()
    modelF.compile(loss=tf.keras.losses.MSE,optimizer=tf.keras.optimizers.SGD(lr=learn_rate))
    return modelF

def create_Reg_model():
    modelF_Reg = tf.keras.wrappers.scikit_learn.KerasRegressor(build_fn = create_SK_model,nb_epoch=SNN_epoch, batch_size=SNN_batch_size)

    return modelF_Reg

def create_Class_model():
    modelF_Reg = tf.keras.wrappers.scikit_learn.KerasClassifier(build_fn = create_SK_model,nb_epoch=SNN_epoch, batch_size=SNN_batch_size)
    return modelF_Class

def create_Single_model():
    if Use_RegClas:
        if Use_Regressor:
            return create_Reg_model()
        elif Use_Classification:
            return create_Class_model()
    else:
        return create_SK_model()
def model_fn_Federated():
    if Use_RegClas:
        if Use_Regressor:
            return tff.learning.from_compiled_keras_model(create_Reg_model,sample_batch)
        elif Use_Classification:
            return tff.learning.from_compiled_keras_model(create_Class_model(),sample_batch)
    elif Use_FLAveraging:
        return tff.learning.from_compiled_keras_model(create_SK_model(),sample_batch)
    else:
        return tff.learning.from_keras_model(create_SGD_model(),sample_batch,loss=tf.keras.losses.MSE)


................... some other code ..................

if Use_FLAveraging:
    trainer_Itr_Process = tff.learning.build_federated_averaging_process(model_fn_Federated,server_optimizer_fn=(lambda : tf.keras.optimizers.SGD(learning_rate=learn_rate)),client_weight_fn=None)
else:
    trainer_Itr_Process = tff.learning.build_federated_sgd_process(model_fn_Federated,server_optimizer_fn=(lambda : tf.keras.optimizers.SGD(learning_rate=learn_rate)),client_weight_fn=None)


Моя главная проблема заключается в том, как включить проблему регрессии / классификации в интегрированную среду TF. Я попробовал приведенную выше реализацию, правильно? неправильно? пожалуйста посоветуй.

Исходя из вышеизложенного, я получаю следующую ошибку:

.....
    py_typecheck.check_type(keras_model, tf.keras.Model)
  File "/home/..../.local/lib/python3.6/site-packages/tensorflow_federated/python/common_libs/py_typecheck.py", line 48, in check_type
    type_string(type_spec), type_string(type(target))))
TypeError: Expected tensorflow.python.keras.engine.training.Model, found function.

0 ответов

Другие вопросы по тегам