首页 > 解决方案 > AttributeError:模块“tensorflow_federated.python.simulation”没有属性“HDF5ClientData”

问题描述

我有一个写入 h5 文件的数据集,我想将其转换为tff.simulation.datasets.ClientData,也就是说,在预处理后它变成这种形式<tensorflow_federated.python.simulation.datasets.client_data.PreprocessClientData at 0x7f00947f6f50 >。一周前,我可以用这个阅读它

train_path='FederatedClients/dataTrain.h5'
train_data = tff.simulation.HDF5ClientData(train_path)

但是现在,我再次收到此语句的以下错误。

----------------------------------------------------------
AttributeError           Traceback (most recent call last)
<ipython-input-6-f4c34c62ca50> in <module>
      1 train_path='FederatedClients/dataTrain.h5'
      2 #train_data=pd.read_hdf(train_path)
----> 3 train_data = tff.simulation.HDF5ClientData(train_path)
      4 test_path='FederatedClients/dataTest.h5'
      5 test_data=pd.read_hdf(test_path)

AttributeError: module 'tensorflow_federated.python.simulation' has no attribute 'HDF5ClientData'

不知道怎么办了,我用最基本的panda读取H5文件也报错,TAT

train_data=pd.read_hdf(train_path)
----------------------------------------------------------
ValueError               Traceback (most recent call last)
<ipython-input-7-151fe098668c> in <module>
      1 train_path='FederatedClients/dataTrain.h5'
----> 2 train_data=pd.read_hdf(train_path)
      3 train_data = tff.simulation.HDF5ClientData(train_path)
      4 test_path='FederatedClients/dataTest.h5'
      5 test_data=pd.read_hdf(test_path)

~/anaconda3/envs/tff/lib/python3.7/site-packages/pandas/io/pytables.py in read_hdf(path_or_buf, key, mode, errors, where, start, stop, columns, iterator, chunksize, **kwargs)
    437             if len(groups) == 0:
    438                 raise ValueError(
--> 439                     "Dataset(s) incompatible with Pandas data types, "
    440                     "not table, or no datasets found in HDF5 file."
    441                 )

ValueError: Dataset(s) incompatible with Pandas data types, not table, or no datasets found in HDF5 file.

如果您能解决我的问题,我将不胜感激

标签: pythontensorflow-federated

解决方案


0.19.0删除了TFF 版本tff.simulation.HDF5ClientData发行说明)。TFF 数据集现在由 SQLite 而不是 HDF5 支持。

HDF5 实现可以从https://github.com/tensorflow/federated/blob/v0.18.0/tensorflow_federated/python/simulation/hdf5_client_data.py恢复。在本地复制并替换:

  • client_data.ClientDatatff.simulation.datasets.ClientData.
  • 删除py_typechecktensor_utils使用,它们不是必需的。

推荐阅读