标签: tensorflow-federated

在TensorFlow联合中创建自定义联合数据集

我想将本博客文章中的循环自动编码器改编为在联合环境中工作。

我对模型进行了稍微修改,以符合TFF图像分类教程中显示的示例

def create_compiled_keras_model():
  model = tf.keras.models.Sequential([
      tf.keras.layers.LSTM(2, input_shape=(10, 2), name='Encoder'),
      tf.keras.layers.RepeatVector(10, name='Latent'),
      tf.keras.layers.LSTM(2, return_sequences=True, name='Decoder')]
  )

  model.compile(loss='mse', optimizer='adam')
  return model

model = create_compiled_keras_model()

sample_batch = gen(1)
timesteps, input_dim = 10, 2

def model_fn():
  keras_model = create_compiled_keras_model()
  return tff.learning.from_compiled_keras_model(keras_model, sample_batch)
Run Code Online (Sandbox Code Playgroud)

gen函数的定义如下:

import random

def gen(batch_size):
    seq_length = 10

    batch_x = []
    batch_y = []

    for _ in range(batch_size):
        rand = random.random() * 2 * np.pi

        sig1 = np.sin(np.linspace(0.0 * np.pi + rand, 3.0 * np.pi …
Run Code Online (Sandbox Code Playgroud)

python-3.x tensorflow tensorflow-federated

5
推荐指数
1
解决办法
414
查看次数

张量流联盟 | tff.learning.from_keras_model() 具有具有 DenseFeature 层和多个输入的模型

我正在尝试联合一个具有多个输入的 keras 模型。其中一些输入是分类的,其中一些是数字的,因此我有一些 DenseFeature 层来嵌入值。

问题是,使用 tff.learning.from_keras_model()预期作为 input_spec 的字典只有 2 个元素 (x,y),但我有多个输入,然后我必须在模型中区分这些输入,以便使用 feature_columns 函数和 DenseFeature 层正确执行嵌入。

如果模型只接受“x”作为输入而没有正确的列名称,我该如何处理单个特征列?

这是代码和错误:

def create_keras_model():
  l = tf.keras.layers

  # handling numerical columns 
  for header in numerical_column_names:
    feature_columns.append(feature_column.numeric_column(header))

  # handling the categorical feature  
  pickup = feature_column.categorical_column_with_vocabulary_list(
      'pickup_location_id', [i for i in range(number_of_locations)])
  #pickup_one_hot = feature_column.indicator_column(pickup)
  #feature_columns.append(pickup_one_hot)

  pickup_embedding = feature_column.embedding_column(pickup, dimension=64)
  #feature_columns.append(pickup_embedding)


  feature_inputs = {
    'pickup_week_day_sin': tf.keras.Input((1,), name='pickup_week_day_sin'),
    'pickup_week_day_cos': tf.keras.Input((1,), name='pickup_week_day_cos'),
    'pickup_hour_sin': tf.keras.Input((1,), name='pickup_hour_sin'),
    'pickup_hour_cos': tf.keras.Input((1,), name='pickup_hour_cos'),
    'pickup_month_sin': tf.keras.Input((1,), name='pickup_month_sin'),
    'pickup_month_cos': tf.keras.Input((1,), name='pickup_month_cos'),
  }
  numerical_features = …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow tensorflow2.0 tensorflow-federated

5
推荐指数
1
解决办法
1386
查看次数

当我们对联合训练数据调用 IterativeProcess.next 时,到底会发生什么?

我完成了联邦学习教程。我想知道当我们在迭代过程中调用 .next 函数时,它是如何工作的。假设我们有训练数据,它是列表的列表。外部列表是客户端列表,内部列表是每个客户端的批量数据。然后,我们创建一个迭代过程,例如联合平均过程,并初始化状态。当我们对此训练数据调用 IterativeProcess.next 时,到底会发生什么。它是在每一轮中随机抽取这些数据吗?或者一次只从每个客户端获取一批数据?

假设我有一个 tf.data.Datasets 列表,每个数据集代表一个客户端数据。如何为联邦学习的下一次迭代从此列表中的采样添加一些随机性?

我的数据集的长度不一定相同。当其中一个数据集完全迭代时,该数据集是否等待所有其他数据集完全迭代其数据?

tensorflow-federated

5
推荐指数
2
解决办法
562
查看次数

调用函数tff.learning.build_federated_averaging_process时的学习率设置

我正在执行联邦学习过程,并使用函数 tff.learning.build_federated_averaging_process 来创建联邦学习的迭代过程。正如 TFF 教程中提到的,该函数有两个参数,分别称为 client_optimizer_fn 和 server_optimizer_fn,在我看来,它们分别代表客户端和服务器的优化器。但在FedAvg论文中,似乎只有客户端进行优化,而服务器只进行平均操作,那么server_optimizer_fn到底在做什么,它的学习率意味着什么?

tensorflow-federated

5
推荐指数
1
解决办法
576
查看次数

Tensorflow联邦学习只能在一台机器上模拟联邦学习吗?

我在https://www.tensorflow.org/federated/federated_learning上阅读了多个指南, 例如图像分类或文本生成示例。

根据我所读到的内容,我看不到如何将张量流联合学习(tff)用于现实世界的应用程序:多个硬件客户端上的数据集。这一切看起来只是为了模拟联邦学习。

我想在多台机器上使用 tff,而不是只在一台机器上模拟它。当有人知道 tff 是否可行或找到有关如何操作的指南时,我将不胜感激。

谢谢。

tensorflow tensorflow-federated

4
推荐指数
1
解决办法
626
查看次数

如何从 CSV 文件创建联合数据集?

我选择了这个数据集:https : //www.kaggle.com/karangadiya/fifa19

现在,我想将此 CSV 文件转换为联合数据集以适应模型。

Tensorflow 提供了有关联邦学习的教程,其中使用了预定义的数据集。但是,我的问题是如何将此特定数据集用于联合学习场景?

tensorflow tensorflow-federated federated-learning

4
推荐指数
1
解决办法
1532
查看次数

TensorFlow Federated:如何调整联合数据集中的非独立同分布性?

我正在 TensorFlow Federated (TFF) 中测试一些算法。在这方面,我想在具有不同“级别”的数据异质性(即非独立同分布性)的相同联合数据集上测试和比较它们。

因此,我想知道是否有任何方法可以以自动或半自动的方式控制和调整特定联合数据集中的非独立同分布的“级别”,例如通过 TFF API 或传统的 TF API (可能在数据集实用程序内部)。

更实际一些:例如,TFF 提供的 EMNIST 联合数据集有 3383 个客户端,每个客户端都有手写字符。然而,这些本地数据集在本地示例的数量和表示的类方面似乎相当平衡(所有类或多或少都在本地表示)。如果我想要一个联合数据集(例如,从 TFF 的 EMNIST 数据集开始),即:

  • 病态上非独立同分布,例如,客户端仅包含 N 个类别中的一个类别(始终指分类任务)。tff.simulation.datasets.build_single_label_dataset 这就是这里文档的目的吗?如果是这样,我应该如何从联合数据集中使用它,例如 TFF 已经提供的数据集?
  • 本地示例数量不平衡(例如,一个客户端有 10 个示例,另一个客户端有 100 个示例);
  • 两种可能性;

我应该如何在 TFF 框架内继续准备具有这些特征的联合数据集?

我应该手工做所有的事情吗?或者你们中的一些人对自动化这个过程有什么建议吗?

另一个问题:在 Hsu 等人的论文“Measuring the Effects of Non-Identical Data Distribution for Federated Visual Classification”中,他们利用狄利克雷分布来合成一组不同的客户,并使用浓度参数控制客户端之间的一致性。这似乎是一种难以调整的方法来生成具有不同异质性水平的数据集。任何有关如何在 TFF 框架内或仅在 TensorFlow (Python) 中(考虑 EMNIST 等简单数据集)实施此策略(或类似策略)的建议也将非常有用。

万分感谢。

python tensorflow tensorflow2.0 tensorflow-federated

4
推荐指数
1
解决办法
633
查看次数

有没有办法让 TFF 客户端拥有内部状态?

我看到的 TFF 教程和研究项目中的代码通常只跟踪服务器状态。我希望存在会影响联合客户端计算的内部客户端状态(例如,完全去中心化且不以联合方式更新的额外客户端内部神经网络)。

然而,在我看到的客户端计算中,它们只是服务器状态和数据的函数。是否有可能完成上述操作?

tensorflow-federated

3
推荐指数
1
解决办法
161
查看次数

联合平均和 TensorFlow

我是联邦学习的新手,刚刚了解 TensorFlow Federated TFF 框架。我脑子里有一些问题,如果有人能澄清这些问题,我将不胜感激:

  1. 联合平均算法是 TFF 支持的唯一聚合算法吗?它与联合随机梯度下降有何不同?
  2. 联合平均是否需要每个客户端接受神经网络培训?或者可以使用任何机器学习算法来训练本地数据?
  3. 我有大数据,我计划将数据划分为较小的数据集,并将每个部分作为一个客户端进行模拟?这在 TFF 中有效吗?它是否考虑水平或垂直联合学习?

提前致谢

tensorflow tensorflow-federated federated-learning

3
推荐指数
1
解决办法
466
查看次数