2012-10-10 2 views
3

저는 제곱 오차 비용 함수와 같은 GNU 옥타브에서 알고리즘 학습을 시도하고 있습니다. I는이 텍스트는 적절한 벡터화 된 forumula은 말한다옥타브 : 어떤 방법이 더 효율적입니까

X는 매트릭스이다 m x n+1
J = (X * theta - y)' * (X * theta - y) * (1/(2*m) 

는 세타는 n+1 x 1 벡터이고, Y는 m x 1 벡터이다.

J = sum((X * theta - y).^2) * (1/(2*m)) 

는 한 번만 X * theta -y을 계산하기 때문에 : 제 질문은이 두 번째 방법은 조금 빠른 여부입니다. 윈도우의 분위기가 매우 열악한 옥타브에 익숙하지 않기 때문에 나는 스스로 벤치마킹을하는 법을 모른다.

이것은 무엇보다 호기심이기 때문에 아무리해도 문제가되지 않는다고 말해도됩니다.

+0

는 당신에게 공식 동일한 결과를 얻을 확신 :

cputime를 사용하여 CPU 시간을 측정하려면? 당신이 최적화하고 싶다면, 왜 쓰지 않으시겠습니까? 'TMP = (X * theta - y)' 'J = TMP '* TMP * (1/(2 * m))' –

답변

3

이것은 wallclock 시간을 확인 :

octave:2> tic; sleep(3); toc 
Elapsed time is 3.00161 seconds. 
octave:3> help tic 

해상도가 너무 크지 않다, 따라서 루프에서 계산을 여러 번 실행할 수 있습니다.

octave:7> cputime() 
ans = 0.21000 
octave:8> sleep(3) 
octave:9> cputime() 
ans = 0.21000 
+0

감사합니다. 유능한. – Indigenuity

관련 문제