【发布时间】:2020-10-22 09:11:25
【问题描述】:
我正在尝试为我的机器学习应用程序创建内存。内存大小为NXz,其中z 是我的向量的大小,N 是它在内存中的实例数。 N 可以很大。随着模型训练的进行,我将阅读和更新各个行。通常在使用h5py 创建数据集时,我们会这样做,
import h5py
import numpy as np
matrix = np.zeros((mem_size,zt_size))
with h5py.File("my_file.h5",'w') as hf:
hf.create_dataset("my_dset",matrix)
但我担心如果我采用非常大的mem_size,matrix = np.zeros((mem_size,zt_size)) 行可能会失败,因为内存可能会被填满。或者,我想我会迭代地填满内存,
vector = np.zeros((mem_size,zt_size))
with h5py.File("my_file.h5",'w') as hf:
for i in range(mem_size):
hf.create_dataset(str(i),vector)
但是,现在我担心从内存中读取和更新会变慢,因为索引太多了。我怎样才能在不填满我的 ram 或不造成较大的相对滞后的情况下做到这一点?还将欣赏使用不同库的替代实现。
注意,我将在训练期间使用磁盘内存,所以这可能是我训练的瓶颈。
【问题讨论】: