#ifdef USE_HDF5
#include
#include "hdf5.h"
#include "hdf5_hl.h"
#include "caffe/layers/hdf5_output_layer.hpp"
#include "caffe/util/hdf5.hpp"
namespace caffe {
template
void HDF5OutputLayer::LayerSetUp(const vector& bottom,
const vector& top) {
file_name_ = this->layer_param_.hdf5_output_param().file_name();
file_id_ = H5Fcreate(file_name_.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT,
H5P_DEFAULT);
CHECK_GE(file_id_, 0) width());
const int data_datum_dim = bottom[0]->count() / bottom[0]->num();
const int label_datum_dim = bottom[1]->count() / bottom[1]->num();
for (int i = 0; i < bottom[0]->num(); ++i) {
caffe_copy(data_datum_dim, &bottom[0]->cpu_data()[i * data_datum_dim],
&data_blob_.mutable_cpu_data()[i * data_datum_dim]);
caffe_copy(label_datum_dim, &bottom[1]->cpu_data()[i * label_datum_dim],
&label_blob_.mutable_cpu_data()[i * label_datum_dim]);
}
SaveBlobs();
}
template
void HDF5OutputLayer::Backward_cpu(const vector& top,
const vector& propagate_down, const vector& bottom) {
return;
}
#ifdef CPU_ONLY
STUB_GPU(HDF5OutputLayer);
#endif
INSTANTIATE_CLASS(HDF5OutputLayer);
REGISTER_LAYER_CLASS(HDF5Output);
} // namespace caffe
#endif // USE_HDF5