Also display outputs in the train net. (Otherwise, why have them?)
authorJeff Donahue <jeff.donahue@gmail.com>
Sat, 12 Jul 2014 06:06:41 +0000 (23:06 -0700)
committerJeff Donahue <jeff.donahue@gmail.com>
Wed, 13 Aug 2014 20:22:09 +0000 (13:22 -0700)
src/caffe/solver.cpp

index d96d039..18269b0 100644 (file)
@@ -193,6 +193,17 @@ void Solver<Dtype>::Solve(const char* resume_file) {
     Dtype loss = net_->ForwardBackward(bottom_vec);
     if (display) {
       LOG(INFO) << "Iteration " << iter_ << ", loss = " << loss;
+      const vector<Blob<Dtype>*>& result = net_->output_blobs();
+      vector<Dtype> score;
+      for (int j = 0; j < result.size(); ++j) {
+        const Dtype* result_vec = result[j]->cpu_data();
+        for (int k = 0; k < result[j]->count(); ++k) {
+          score.push_back(result_vec[k]);
+        }
+      }
+      for (int i = 0; i < score.size(); ++i) {
+        LOG(INFO) << "    Training score #" << i << ": " << score[i];
+      }
     }
 
     ComputeUpdateValue();
@@ -267,7 +278,7 @@ void Solver<Dtype>::Test(const int test_net_id) {
     LOG(INFO) << "Test loss: " << loss;
   }
   for (int i = 0; i < test_score.size(); ++i) {
-    LOG(INFO) << "Test score #" << i << ": "
+    LOG(INFO) << "    Test score #" << i << ": "
         << test_score[i] / param_.test_iter(test_net_id);
   }
   Caffe::set_phase(Caffe::TRAIN);