为什么我为客户分配600个示例,但是当我在TFF中训练模型时却有700个示例?

问题描述 投票:0回答:1

当我在TFF中使用创建的数据集时遇到了一个奇怪的问题。我创建了一个用于联合培训的数据集,在其中分配了5个客户示例,如下所示:600 600 300 700300。但是,当我在模型中对其进行培训时,我发现示例数量为600 600 600 600700。我感到非常困惑。然后,我打印了我创建的数据集的过程信息,并检查了数据集的HDF5文件,它们都是600 600 300 700 300。我使用此代码查看HDF5文件中的客户端中有多少示例,结果为700:

len(f3["examples"][client_ids[3]]["label"].value)

我使用此代码来实例化数据集,并查看客户端中有多少示例:

BAL3 = tff.simulation.hdf5_client_data.HDF5ClientData("BAL3.hdf5")

    num_clients_BAL3 = len(BAL3.client_ids)

    example_dataset = BAL3.create_tf_dataset_for_client(
        BAL3.client_ids[3]
    )
    example_element = next(iter(example_dataset))
    n = 0
    iter_ = iter(example_dataset)
    while(iter_):
      next(iter_)
      n = n+1
      print(n) #n stop at 600

我使用此代码来实例化第三个客户端的数据集并进行调试:

BAL3 = tff.simulation.hdf5_client_data.HDF5ClientData("BAL3.hdf5")

example_dataset = BAL3.create_tf_dataset_for_client(
    BAL3.client_ids[3]
)
example_element = next(iter(example_dataset))
n = 0
iter_ = iter(example_dataset)
while(n < 601): #n<600 can work well
  example_element = next(iter_)
  n = n+1
  #print(n)

print(example_element['label'].numpy() )
plt.imshow(example_element['pixels'].numpy(), cmap='gray', aspect='equal')
plt.grid(False)
_=plt.show()

我在创建数据集时分配了第三客户端700示例。但是,当我迭代此客户端的数据时,我发现它显示了600个示例。 tff HDF5文件也显示700。

tensorflow-datasets tensorflow-federated
1个回答
0
投票

在这里结束循环:由于TFF sorts它返回的客户ID,所以通常不能依赖客户ID的顺序与构造顺序相同。

© www.soinside.com 2019 - 2024. All rights reserved.