【问题标题】:scilab save('-append') doesn't seem to workscilab save('-append') 似乎不起作用
【发布时间】:2020-06-25 07:29:19
【问题描述】:

我正在尝试使用 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]

你有什么想法吗?

【问题讨论】:

  • -append 选项看起来更像是在 shell 环境中。 append呢?
  • @Friedrich '-append' 来自 scilab 的文档

标签: hdf5 large-data scilab


【解决方案1】:

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

// 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)

【讨论】:

  • 非常感谢。稍作调整后,它就可以完美运行。我不得不禁用 h5dump,这导致 java 堆溢出
  • 确实,这里 hd5dump 只是为了显示这个(小)示例的数据集的连续变化。
【解决方案2】:

您必须垂直连接(分号)而不是水平连接(逗号)

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

顺便说一句,这不会解决您的内存问题,因为矩阵在 Scilab 的工作区中增长并且使用“-append”只是 owerwrites hdf5 文件中的对象(您使用相同的名称)。

【讨论】:

  • 感谢您的回答,您知道增量保存矩阵的其他方法吗?我使用了一些任意格式并使用 mfprintf() 但它需要知道在其他地方读取数据时使用的格式
  • 唯一的方法是使用 Scilab 中的低级 hdf5 命令(即h5writeh5dataset)。
  • 你测试了我的最后一个答案吗?对我来说,它可以解决您的问题(并且是唯一不会降低精度和内存压力的方法)。
猜你喜欢
  • 2012-10-11
  • 1970-01-01
  • 2016-11-29
  • 2016-02-01
  • 2020-09-23
  • 2010-12-05
  • 2011-06-14
  • 2015-01-10
  • 2016-02-24
相关资源
最近更新 更多