input_fn 具有多个数据集的张量流估计器

问题描述

我正在尝试构建一个联合学习模型,为此我需要训练多个模型,每个模型都有特定的数据。

然后我会在每一步之后将模型权重的平均值聚合成一个大的。

for round_comm in range(100):
    for client in clients: 
        client_estimator = tf.estimator.Estimator(
                model_fn=model_fn
            )
        # copy aggregated_weights at prevIoUs step in model

        client_estimator.train(
                input_fn=lambda: input_fn()
            )

        # Retrieve weights
    # compute mean of weights

他们每个人都会训练 1 或 2 个 epoch,然后我将这些模型的所有权重聚合为一个大的

例如:

train Model_clientA on dataset_A (1st batch) for 1 epoch
train Model_clientB on dataset_B (1st batch) for 1 epoch

Aggregates every weights in Model_Clients_Agg.

Model_clientA and Model_clientB copy weights from Model_Clients_Agg.

then for next iteration :

train Model_clientA on dataset_A (next batch)
train Model_clientB on dataset_B (next batch)

etc. etc.

我已经试过了:

BATCH_SIZE = 512
EPOCHS = 4

def input_fn(data,epochs,batch_size):
    # Convert the inputs to a Dataset.
    dataset = tf.data.Dataset.from_tensor_slices(({'client_1':data[0],'client_2':data[1]},data[2]))
    # Shuffle,repeat,and batch the examples.
    SHUFFLE_SIZE = 1000
    dataset = dataset.shuffle(SHUFFLE_SIZE).repeat(epochs).batch(batch_size)
    dataset = dataset.prefetch(2)
    # Return the dataset.
    return dataset

在这种情况下不合适。

如何提供可以适应多个数据集的 input_fn?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...