diff options
author | Kevin James Matzen <kmatzen@cs.cornell.edu> | 2014-10-13 13:16:04 -0400 |
---|---|---|
committer | Kevin James Matzen <kmatzen@cs.cornell.edu> | 2014-10-14 19:35:23 -0400 |
commit | 08b971feae8551ca5c7ce31a938a1f232ee56af2 (patch) | |
tree | b8569b89b09583b4434b0d700ee2943f24b37075 /src/caffe/layers | |
parent | 0987c72c9d11b94524e1dc91150daf273c5b2537 (diff) | |
download | caffeonacl-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')
-rw-r--r-- | src/caffe/layers/data_layer.cpp | 11 |
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); |