解释Caffe中的Silence层

3
void SilenceLayer<Dtype>::Backward_cpu(const vector<Blob<Dtype>*>& top,
      const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
  for (int i = 0; i < bottom.size(); ++i) {
    if (propagate_down[i]) {
      caffe_set(bottom[i]->count(), Dtype(0),
                bottom[i]->mutable_cpu_diff());
    }
  }
}

它只是将差异设置为零。 这个层有什么用处?

1个回答

5
使用此层的目的仅是避免在日志中报告未使用的 blob 的输出。作为输出管理层,它的梯度显然为零。
例如,假设我们正在使用 AlexNet,并将“fc7”层的底部更改为“pool5”而不是“fc6”。如果我们不删除“fc6” blob 声明,则不再使用此层,但其输出将打印在 stderr 中:它被视为整个架构的输出。如果我们想保留“fc6”,但不显示其值,我们可以使用“SilenceLayer”。
请参见http://caffe.berkeleyvision.org/tutorial/layers/silence.html
另请参见caffe.help

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接