summaryrefslogtreecommitdiff
path: root/src/caffe/layers/data_layer.cpp
diff options
context:
space:
mode:
authorKevin James Matzen <kmatzen@cs.cornell.edu>2014-10-13 13:16:04 -0400
committerKevin James Matzen <kmatzen@cs.cornell.edu>2014-10-14 19:35:23 -0400
commit08b971feae8551ca5c7ce31a938a1f232ee56af2 (patch)
treeb8569b89b09583b4434b0d700ee2943f24b37075 /src/caffe/layers/data_layer.cpp
parent0987c72c9d11b94524e1dc91150daf273c5b2537 (diff)
downloadcaffeonacl-08b971feae8551ca5c7ce31a938a1f232ee56af2.tar.gz
caffeonacl-08b971feae8551ca5c7ce31a938a1f232ee56af2.tar.bz2
caffeonacl-08b971feae8551ca5c7ce31a938a1f232ee56af2.zip
Templated the key and value types for the Database interface. The Database is now responsible for serialization. Refactored the tests so that they reuse the same code for each value type and backend configuration.
Diffstat (limited to 'src/caffe/layers/data_layer.cpp')
-rw-r--r--src/caffe/layers/data_layer.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/caffe/layers/data_layer.cpp b/src/caffe/layers/data_layer.cpp
index c379d78d..62963352 100644
--- a/src/caffe/layers/data_layer.cpp
+++ b/src/caffe/layers/data_layer.cpp
@@ -25,10 +25,11 @@ template <typename Dtype>
void DataLayer<Dtype>::DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
const vector<Blob<Dtype>*>& top) {
// Initialize DB
- database_ = DatabaseFactory(this->layer_param_.data_param().backend());
+ database_ = DatabaseFactory<string, Datum>(
+ this->layer_param_.data_param().backend());
const string& source = this->layer_param_.data_param().source();
LOG(INFO) << "Opening database " << source;
- CHECK(database_->open(source, Database::ReadOnly));
+ CHECK(database_->open(source, Database<string, Datum>::ReadOnly));
iter_ = database_->begin();
// Check if we would need to randomly skip a few data points
@@ -44,8 +45,7 @@ void DataLayer<Dtype>::DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
}
// Read a data point, and use it to initialize the top blob.
CHECK(iter_ != database_->end());
- Datum datum;
- datum.ParseFromArray(iter_->value.data(), iter_->value.size());
+ const Datum& datum = iter_->value;
// image
int crop_size = this->layer_param_.transform_param().crop_size();
@@ -89,9 +89,8 @@ void DataLayer<Dtype>::InternalThreadEntry() {
const int batch_size = this->layer_param_.data_param().batch_size();
for (int item_id = 0; item_id < batch_size; ++item_id) {
- Datum datum;
CHECK(iter_ != database_->end());
- datum.ParseFromArray(iter_->value.data(), iter_->value.size());
+ const Datum& datum = iter_->value;
// Apply data transformations (mirror, scale, crop...)
int offset = this->prefetch_data_.offset(item_id);