私は入力ベクトルと行列の間にドット積を実行するために使用される小さなJavaメソッドを持っています。 ドットプロダクトメソッドをJavaでより速く効率的にするにはどうすればいいですか?
public void calcOutput() {
outputs = new float[output];
float sum = 0F;
for(int j = 0; j < output; j++) {
for(int i = 0; i < input; i++) {
sum += inputs[i] * weights[j][i];
}
outputs[j] = sum;
}
}
は、基本的にこれが行うことになっているもの「入力」私の入力ベクトルを取ると、私は「重み」と命名しているマトリックスと内積を実行している:ここではコードです。出力は出力ベクトル 'outputs'に配置されます。
これをもっと速くするか、より効率的にするにはどうすればよいですか?私の体重マトリックスは、それが助けるならば、マトリックスである必要はありません。私は対応するインデックスに簡単にアクセスする方法が必要です。
ありがとうございました
このコードをベンチマークしましたか?なぜそれがより効率的になると思いますか? –
@ cricket_007ええ、それは与えられた30-40ミリメートルの大きな入力と出力番号と大きなウェイトマトリックスを実行します。 – Seephor
'inputs'ベクトルへのアクセス回数を減らすために、外側と内側のループを逆にすることで、分数的に高速化することができます。私は時間があれば、後で答えを書きます。 –