2017-02-11 2 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를 0으로 설정합니다. 이 레이어의 용도는 무엇입니까?카페에서 무음 레이어를 설명하십시오.

답변

3

이 레이어를 사용하면 사용되지 않는 얼룩의 출력이 로그에 기록되는 것을 피할 수 있습니다. 출력 관리자 레이어이므로 분명히 그라데이션이 0입니다.

예를 들어 AlexNet을 사용 중이며 'fc7'계층의 하단을 'fc6'대신 'pool5'로 변경한다고 가정 해 보겠습니다. 'fc6'blob 선언을 삭제하지 않으면이 레이어는 더 이상 사용되지 않지만 출력은 표준 오류로 인쇄됩니다. 전체 아키텍처의 출력으로 간주됩니다. 몇 가지 이유로 'fc6'을 유지하려고하지만 값을 표시하지 않으면 'SilenceLayer'를 사용할 수 있습니다.

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

caffe.help 참조하십시오.