【问题标题】:Expected a callable, found non-callable tensorflow_federated.python.learning.model_utils.EnhancedTrainableModel期望一个可调用的,发现不可调用的 tensorflow_federated.python.learning.model_utils.EnhancedTrainableModel
【发布时间】:2019-08-06 17:35:03
【问题描述】:

无法使用 TFF 的 build_federated_averaging_process()。按照 TFF 联合文档中的教程进行操作。

这是我的型号代码:

X_train = <valuex>
Y_train = <valuey>


def model_fn():

    model = tf.keras.models.Sequential([
        tf.keras.layers.Conv1D(32,dtype="float64",kernel_size=3,padding='same',activation=tf.nn.relu,input_shape=(X_train.shape[1], X_train.shape[2])),
        tf.keras.layers.MaxPooling1D(pool_size=3),
        tf.keras.layers.Conv1D(64,kernel_size=3,padding='same',activation=tf.nn.relu),
        tf.keras.layers.MaxPooling1D(pool_size=3),
        tf.keras.layers.Flatten(),
        tf.keras.layers.Dense(128,activation=tf.nn.relu),
        tf.keras.layers.Dropout(0.45),
        tf.keras.layers.Dense(1, activation=tf.nn.sigmoid)
    ])

    model.compile(
      loss=tf.keras.losses.SparseCategoricalCrossentropy(),
      optimizer=tf.keras.optimizers.SGD(learning_rate=0.05),
      metrics=[tf.keras.metrics.Accuracy()])

    model.summary()

    return tff.learning.from_compiled_keras_model(model, sample_batch)


iterative_process = tff.learning.build_federated_averaging_process(model_fn())

我得到错误:

TypeError:应为可调用,但发现不可调用 tensorflow_federated.python.learning.model_utils.EnhancedTrainableModel。

【问题讨论】:

    标签: tensorflow tensorflow-federated


    【解决方案1】:

    build_federated_averaging_process 的参数应该是 model_fn 函数,而不是调用它的返回值。

    尝试更改此行:

    iterative_process = tff.learning.build_federated_averaging_process(model_fn())
    

    到:

    iterative_process = tff.learning.build_federated_averaging_process(model_fn)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-08
      • 2022-12-07
      • 1970-01-01
      • 2015-04-13
      • 2017-01-28
      • 2021-09-04
      • 2021-02-05
      • 2018-02-25
      相关资源
      最近更新 更多