2017-02-11 82 views
2
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()); 
    } 
    } 
} 

它只是将diff设置为零。 这层有什么用?解释咖啡中的沉默层

回答

3

该层的使用仅仅是为了避免在日志中报告未使用的斑点的输出。作为输出管理器层,显然它的梯度为零。

例如,让我们假设我们正在使用AlexNet,并且将'fc7'层的底部更改为'pool5'而不是'fc6'。如果我们不删除'fc6'blob声明,该层不再使用,但其输出将打印在stderr中:它被视为整个体系结构的输出。如果我们想因为某些原因保留'fc6',但是没有显示它的值,我们可以使用'SilenceLayer'。

http://caffe.berkeleyvision.org/tutorial/layers/silence.html

caffe.help见。