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.