【背景】
训练神经网络,需要大量样本数据。内存空间显然是不够的,需要考虑一些其他办法来储存和训练数据
1.网络框架用的是keras,keras正好 有 fit_generator,所以只用写一个迭代器就可以用于大量数据的训练
2.剩下的就是数据的储存和持久化。keras自带HDF5Matrix,但是这个比较残,貌似只支持读。
还能用的就是h5py了,第三方库。
【h5py】
h5py的一些基本操作就不说了,比如新建group、dataset的相关文章挺多的。
但是,由于需求特殊,样本不是一次采集完成。
只能一点一点的更新,因此需要分步来写。
在csdn上看到一种方法是先a)读出旧的;b)删除旧的;c)写入旧+新
显然,对于这种方法是不屑的。
快要放弃h5py的时候,查stackoverflow。发现有一种方法可以增量写【参考链接】,要点如下:
1.新建dataset时一定要指定maxshape和chunks,指定chunks需要指定shape(第二个参数)
dset = f.create_dataset('voltage284', (10**5,), maxshape=(None,),
dtype='i8', chunks=(10**4,))<