草庐IT

python - 如何读取一个 hdf5 数据文件中的批处理进行训练?

我有一个大小为(21760,1,33,33)的hdf5训练数据集。21760是训练样本的总数。我想使用大小为128的小批量训练数据来训练网络。我想问:如何使用tensorflow每次从整个数据集中提供128mini-batch训练数据? 最佳答案 如果你的数据集太大以至于无法像keveman建议的那样导入内存,你可以直接使用h5py对象:importh5pyimporttensorflowastfdata=h5py.File('myfile.h5py','r')data_size=data['data_set'].shape[0]b

python - 为什么读取整个 hdf5 数据集比读取切片更快

我想弄清楚为什么会这样:In[1]:importtime,h5pyash5In[2]:f=h5.File('myfile.hdf5','r')In[3]:st=time.time();data=f["data"].value[0,:,1,...];elapsed=time.time()-st;In[4]:elapsedOut[4]:11.127676010131836In[5]:st=time.time();data=f["data"][0,:,1,...];elapsed2=time.time()-st;In[6]:elapsed2Out[6]:59.810582399368286I

python - 用于 Python 的 HDF5 : high level vs low level interfaces. h5py

我一直在使用C和Matlab处理HDF5文件,两者都使用相同的方式读取和写入数据集:用h5f打开文件用h5d打开数据集用h5s选择空间等等……但现在我正在使用Python,通过它的h5py库,我看到它有两种管理HDF5的方法:高级接口(interface)和低级接口(interface).对于前者,从文件的单个变量获取信息所需的代码行更少。使用高级接口(interface)时是否有明显的性能损失?例如,当处理一个包含很多变量的文件时,我们必须只读取其中一个。 最佳答案 高级接口(interface)通常会带来某种性能损失。之后,它是

python - 从 hdf 文件中获取列名(标题)

我想知道如何获取hdf文件的列名(似乎存储在hdfheader中);例如,一个文件可能有名为[a,b,c,d]的列,而另一个文件有[a,b,c]列,而另一个文件有[b,e,r,z]列;我想找出哪些有哪些。非常感谢任何帮助! 最佳答案 要在python之外执行此操作,您可以使用h5dump通过像h5dump--headermy.hdf5这样的东西在python中你可以使用h5py例如,这是我访问HDF-EOS5文件的字段名称的方式:>>>importh5py>>>f=h5py.File('/tmp/temp.hdf','r')>>>f

python - Pytables/Pandas : Combining (reading? ) 多个 HDF5 存储按行拆分

在“一次写入,多次读取”工作流程中,我经常使用FastExport实用程序解析从Teradata转储的大型文本文件(20GB-60GB),并使用Pandas将它们加载到Pytables中。我正在使用multiprocessing对文本文件进行分block并将它们分发到不同的进程以编写一个.H5文件,该文件根据行数拆分,每个文件大约5MM,以支持并行写入。与写入25MM行x64列的单个hdf5文件的两个22分钟相比,并行写入多个hdf5文件大约需要12分钟。%timeit-n1write_single_hdf_multiprocess()1loops,bestof3:22min42spe

python - 在不加载到内存的情况下将 HDF5 转换为 Parquet

我有一个存储为HDF5格式的大型数据集(约600GB)。由于这太大而不适合内存,我想将其转换为Parquet格式并使用pySpark执行一些基本数据预处理(规范化、查找相关矩阵等)。但是,我不确定如何在不将其加载到内存的情况下将整个数据集转换为Parquet。我看了这个要点:https://gist.github.com/jiffyclub/905bf5e8bf17ec59ab8f#file-hdf_to_parquet-py,但似乎正在将整个数据集读入内存。我想到的一件事是分block读取HDF5文件并将其增量保存到Parquet文件中:test_store=pd.HDFStore(

python - 使用 Python 删除 HDF 存储中的键/表

有没有类似下面的pyTables方法:withpd.get_store(my_store)asstore:keys=store.keys()rem_key=min(sorted(keys))store.remove(rem_key)我实际上是在尝试访问HDF5存储的key列表,找到不再需要的key(在本例中是min(),例如,如果存储key是日期),然后删除该key从商店中取出,同时保留其他的。Pandas似乎对此没有任何帮助,我查看了pyTables方法但无济于事,阅读过它们会影响python中的HDF功能。谢谢! 最佳答案 Pa

python - 如何在 python 中将数据从单个 hdf5 文件安全地并行写入多个文件?

我正在尝试将我的数据(从hdf5格式的单个文件)写入多个文件,并且当任务以串行方式执行时它工作正常。现在想提高效率,使用multiprocessing模块修改代码,但是有时候输出会出错。这是我的代码的简化版本。importmultiprocessingasmpimportnumpyasnpimportmath,h5py,timeN=4#numberofprocessestouseblock_size=300data_sz=678dataFile='mydata.h5'#fakesomedatamydata=np.zeros((data_sz,1))foriinrange(data_sz

python - 使用多处理将数据写入hdf文件

这似乎是一个简单的问题,但我无法理解它。我有一个在双for循环中运行并将结果写入HDF文件的模拟。该程序的一个简单版本如下所示:importtablesaspta=range(10)b=range(5)defSimulation():hdf=pt.openFile('simulation.h5',mode='w')foriiina:print(ii)hdf.createGroup('/','A%s'%ii)foriinb:hdf.createArray('/A%s'%ii,'B%s'%i,[ii,i])hdf.close()returnSimulation()此代码完全符合我的要求,但

python - Pandas和HDF5,查询一张表,包含 '&'字符的字符串

我在使用HDFStore进行分组时遇到了问题,结果扩展到根据包含“&”字符的字符串选择行。这应该能说明问题>>>frompandasimportHDFStore,DataFrame>>>df=DataFrame({'a':['a','a','c','b','test&test','c','b','e'],'b':[1,2,3,4,5,6,7,8]})>>>store=HDFStore('test.h5')>>>store.append('test',df,format='table',data_columns=True)>>>df[df.a=='test&test']ab4test&t