scilab save('-append') 似乎不起作用



我正在尝试使用 Scilab 为 ML 创建一个数据集,我需要在数据生成期间保存,因为它对于 scilab 的最大堆栈来说太大了。 这是我做的一个玩具示例,以找出出了什么问题,但我无法弄清楚

datas=[];
labels=[];
for i =1:10
for j=1:100
if j==1
disp(i)
end
data = sin(-%pi:0.01:%pi);
label = rand();
datas = [datas, data];
labels = [labels, label];
end
save(chemin+'test.h5','-append','datas','labels')
datas = [];
labels = [];
end

我正在寻找最后的数据形状为 [1000,629],但我得到 [62900,0]

你知道为什么会这样吗?

下面是如何在没有任何内存压力的情况下增量保存大矩阵的示例:

// create a new HDF5 file
a = h5open(TMPDIR + "/test.h5", "w")
// create the dataset
N = 3; // number of chuncks
nrows = 5;  // rows of a single chunk
ncols = 10; // cols of a single chunk
chsize = [nrows, ncols];
maxrows = N*nrows; // final number of rows of concatenated matrix
maxcols = ncols;   // final number of cols of concatenated matrix

for k=1:N
// warning, x is viewed as a C-matrix (row-major), transpose if applicable
x = rand(nrows,ncols);
h5dataset(a, "My_Dataset", ...
[chsize ;1 1 ;1 1 ;chsize ;chsize],...
x, ...
[k*nrows ncols; maxrows maxcols; 1+(k-1)*nrows 1 ;1 1 ;chsize; chsize])
h5dump(a, "My_Dataset");
end
disp(a.root.My_Dataset.data)
h5close(a)

你必须垂直连接(分号(而不是水平连接(昏迷(

datas = [datas; data];
labels = [labels; label];

顺便说一句,这不会解决您的内存问题,因为矩阵在 Scilab 的工作空间中增长,使用"-append"只是在 hdf5 文件中写入对象(您使用相同的名称(。

最新更新