2016-08-18 3 views
2

이미지 분류 (예 : VGG 또는 AlexNet)를위한 길쌈 신경 네트워크 아키텍처에서 네트워크의 각 레이어 결과를 계산하는 데 걸리는 시간을 비교하고 싶습니다. 테스트 시간에 순방향 패스 (preferebly Caffe 사용).CNN에서 각 레이어의 실행 시간을 측정하는 방법

특히, 나는 전체 연결 레이어에 비해 길쌈 레이어에 얼마나 많은 시간을 소비하는지에 관심이 있습니다.

답변

-1

모든 CAFFE 층 src/caffe/layers/pooling_layer.cu는 당신에 따라 .cpp 또는 .cu 순방향 함수의 시간 함수를 추가 할 필요 implementation.So GPU가, 예 src/caffe/layers/pooling_layer.cpp의 CPU 구현은, src/caffe/layers DIR의 전후 기능을 갖는다 CPU 또는 GPU를 사용하고 있습니다. caffe time 명령

0

는 두 네트워크 만 길쌈 레이어가 하나 밖에 밀도 (완전히 연결) 레이어가 하나를 만들 것하고 또 다른 방법을 사용하여

또는, 가장 간단한 방법. 길쌈 네트워크를 사용하여 순방향 패스를하고, 시간을 측정하고, 결과 (길쌈 네트워크 만의 출력)를 완전히 연결된 네트워크로 전달하고, 순방향 패스를하고 시간을 측정합니다.

0

그래서, 무엇이 문제입니까? caffe time가 작동하지 않습니까?

0

무엇 그냥이 같은 테스트를위한 net.cpp에서 class caffe::Timer 사용에 대한 :

#include "caffe/util/benchmark.hpp" //use class caffe::Timer 

Dtype Net<Dtype>::ForwardFromTo(int start, int end) { 
    ... //Some original contents 
    Timer timer; 
    for (int i = start; i <= end; ++i) { 
    ...//Some original contents 
    string layer_name = layers_[i]->layer_param().name(); //get layer name 
    timer.Start(); 
    Dtype layer_loss = layers_[i]->Forward(bottom_vecs_[i], top_vecs_[i]); 
    float forward_time = timer.MicroSeconds(); 
    LOG(ERROR) << layer_name << " consumes: " << forward_time << " microseconds during forward."; 
    ... 
    } 
    return loss; 
} 
관련 문제