Я столкнулся со странной проблемой, когда использовал свой созданный набор данных в TFF. Я создал набор данных для федеративного обучения, в котором я распределил 5 примеров клиентов следующим образом: 600 600 300 700 300. Но когда я обучил их модели, я обнаружил, что число примеров составляет 600 600 600 600 700. Я был так растерян. А затем я распечатал информацию о процессе моего созданного набора данных и проверил файл 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.