zoukankan      html  css  js  c++  java
  • Caffe hdf5 layer data 大于2G 的导入

    问题:

          Datatype class: H5T_FLOAT,
          Check failed: error == cudaSuccess (2 vs. 0)  out of memory.

          hdf5 layer 最大的导入的大小是2G, 超过会报错[1]。

    解决方法:

         有人 h5repart -m1g 将数据集分割成多个文件每个是固定大小,我尝试后发现,会出现数据截断[1]

         参考Caffe中store2hdf5.m我自己写一个分割的小程序,主要是先把数据读出来,然后再分批存。

     num = 0;
     for i = 1:1000:8000
         data = h5read('data/train.h5', '/data', [1,1,1,i], [64,64,48,1000] );
         label = h5read('data/train.h5', '/label', [1,1,1,i], [64,64,1,1000] );
         
         count = size(data,4);
         chunksz = 100;
         created_flag = false;
         totalct = 0;
         
         savepath = ['data/train', num2str(num), '.h5'];
         num = num + 1;
         
         for batchno = 1:floor(count/chunksz)
             last_read=(batchno-1)*chunksz;
             batchdata = data(:,:,:,last_read+1:last_read+chunksz);
             batchlabs = label(:,:,1,last_read+1:last_read+chunksz);
             
             startloc = struct('dat',[1,1,1,totalct+1], 'lab', [1,1,1,totalct+1]);
             curr_dat_sz = store2hdf5(savepath, batchdata, batchlabs, ~created_flag, startloc, chunksz);
             created_flag = true;
             totalct = curr_dat_sz(end);
         end
         h5disp(savepath);
     end

    里面的数据维数和dataname按需改下。

    Ref:

    [1] https://github.com/BVLC/caffe/issues/1470

  • 相关阅读:
    html基础起航
    必杀技———SQL基础整理系列(一)
    JavaScript代码段整理笔记系列(一)
    与JSP的初次邂逅……
    产品第二篇
    产品第一篇
    进程在后台可靠运行的几种方法
    Vue.js模板语法
    更靠谱的横竖屏检测方法
    浮动【电梯】或【回到顶部】小插件:iElevator.js
  • 原文地址:https://www.cnblogs.com/penguins/p/5488872.html
Copyright © 2011-2022 走看看