首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Caffe没有读取所有h5文件

Caffe没有读取所有h5文件
EN

Stack Overflow用户
提问于 2016-01-10 18:50:02
回答 1查看 188关注 0票数 1

我在train.txt中列出了以下train.txt文件,这些文件将提供给hdf5数据层。

/home/foo/data/h5_files/train_data1.h5 /home/foo/data/h5_files /home/foo/data/h5_files/train_data3.h5 /home/foo/data/h5_files/train_data4.h5 /home/foo/data/h5_files/train_data5.h5

我有3个数据集- XMetaLabels在这些文件中。最初,我将所有这些都保存在一个h5文件中,但由于caffe不能处理大于2GB的h5文件,所以我不得不将X(假设X由5000个样本组成)分成5部分。在第一个h5中,我将Meta和标签与第一部分一起存储,即1000个X样本,在其余的4个h5文件中,我每个都有1000个样本。当我开始执行finetuning时,caffe会使用以下错误消息崩溃

代码语言:javascript
复制
0111 07:46:54.094041 23981 layer_factory.hpp:74] Creating layer data
 net.cpp:76] Creating Layer data
 net.cpp:334] data -> X
 net.cpp:334] data -> Labels
 net.cpp:334] data -> Meta
 net.cpp:105] Setting up data
 hdf5_data_layer.cpp:66] Loading list of HDF5  filenames from: /home/foo/hdf5_train.txt
 hdf5_data_layer.cpp:80] Number of HDF5 files: 5
 hdf5_data_layer.cpp:53] Check failed: hdf_blobs_[i]->num() == num (5000 vs. 1000) 

*** Check failure stack trace: ***
    @     0x7f1eebcab0d0  google::LogMessage::Fail()
    @     0x7f1eebcab029  google::LogMessage::SendToLog()
    @     0x7f1eebcaaa07  google::LogMessage::Flush()
    @     0x7f1eebcad98f  google::LogMessageFatal::~LogMessageFatal()
    @     0x7f1ef18ff045  caffe::HDF5DataLayer<>::LoadHDF5FileData()
    @     0x7f1ef18fdca4  caffe::HDF5DataLayer<>::LayerSetUp()
    @     0x7f1ef196bffc  caffe::Net<>::Init()
    @     0x7f1ef196e0b2  caffe::Net<>::Net()
    @     0x7f1ef18cf3cd  caffe::Solver<>::InitTrainNet()
    @     0x7f1ef18cfa3f  caffe::Solver<>::Init()
    @     0x7f1ef18cfe75  caffe::Solver<>::Solver()
    @           0x40a3c8  caffe::GetSolver<>()
    @           0x404fb1  train()
    @           0x405936  main
    @       0x3a8141ed1d  (unknown)
    @           0x4048a9  (unknown)

在我看来,主要的问题是“检查失败: hdf_blobs_i-> num () == num (5000对1000)”。

根据这一假设,caffe只读取第一个h5文件,如何使它读取所有5个h5文件?请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-10 19:46:13

您期望caffe如何跨所有文件同步所有输入数据?您期望它从第二个文件中读取X,从第一个文件中读取Meta吗?

如果您要实现"HDF5Data"层,您将如何期望为您部署这些数据?

目前,在caffe中实现的方式是,所有变量都应该以相同的方式在HDF5文件之间划分。也就是说,如果您决定将X分为5个文件,例如第一个文件中的1000个样本,第二个文件中的1234个样本。那么必须以相同的方式对MetaLabels进行划分:train_data1.h5将有1000个XMetaLabel样本;train_data2.h5将有1234个XMetaD16等等。

Caffe不将所有数据加载到内存中,它只获取SGD迭代所需的批处理。因此,将变量拆分到不同的文件中是没有意义的。此外,如果将存储在每个文件中的样本数作为batch_size的整数倍,则可能会有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34709435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档