4

二乗誤差コスト関数のような GNU Octave でいくつかの機械学習アルゴリズムを試しています。私が持っているテキストによると、適切なベクトル化されたフォーラムは次のとおりです。

J = (X * theta - y)' * (X * theta - y) * (1/(2*m)

ここで、X は m x n+1行列、theta はn+1 x 1ベクトル、y はm x 1ベクトルです。私の質問は、この2番目の方法が少し速いかどうかです:

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

一度しか計算しないからX * theta -yです。Windowsの非常に気まぐれな環境で実行されているように見えるオクターブに慣れていないため、自分でベンチマークを行う方法がわかりません。

これは何よりも好奇心なので、気にしないでください。

4

1 に答える 1

4

これは壁時計の時間をチェックします:

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

解像度はあまり高くないため、ループで計算を数回実行することをお勧めします。

CPU 時間を測定するには、以下を使用しますcputime

octave:7> cputime()
ans =  0.21000
octave:8> sleep(3)
octave:9> cputime()
ans =  0.21000
于 2012-10-10T21:42:42.933 に答える