TFF: ошибка ValueError при проверке цели модели - PullRequest
1 голос
/ 10 июля 2020

Я хотел бы реализовать код классификации изображений с помощью tenorflow-federated, поэтому, когда я создаю модель и передаю ее процессу федеративного усреднения, я обнаруживаю ошибку, которую не могу понять здесь. Вот часть моего кода, реализованного с помощью TFF

input_shape = (224,224,3)
def create_compiled_keras_model(input_shape, base_model='resnet18'):
    inputs = tf.keras.layers.Input(shape=(input_shape))

    base_encoder = tf.keras.applications.ResNet50(
      include_top=False, weights=None, input_tensor=None,
      input_shape=None, pooling='avg')
    base_encoder.training = True

    h = base_encoder(inputs)
    x = tf.keras.layers.Dense(2)(h)
    x = tf.keras.layers.Activation('relu')(x)
    x = tf.keras.layers.Dense(2)(x)

    model = tf.keras.Model(inputs=inputs, outputs=[h, x])
    model.compile(
      optimizer=tf.keras.optimizers.SGD(learning_rate=0.001),
      loss=tf.keras.losses.CategoricalCrossentropy(),
      metrics=[tf.keras.metrics.CategoricalAccuracy()])
    return model

def model_fn():
    keras_model = create_compiled_keras_model(input_shape, base_model='resnet18')
    return tff.learning.from_compiled_keras_model(keras_model, sample_batch) 

iterative_process = tff.learning.build_federated_averaging_process(model_fn, server_optimizer_fn=lambda: tf.keras.optimizers.SGD(learning_rate=1.0),client_weight_fn=None)

Ошибка была:

ValueError: Error when checking model target: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 2 array(s), for inputs ['resnet50', 'dense_1'] but instead got the following list of 1 arrays: [<tf.Tensor 'Const_1:0' shape=(2, 2) dtype=float32>]...

Спасибо за помощь !!

...