静的行列と動的行列[Eigen]
六花です。
Eigenの行列定義には大きく分けて二種類あります。
Matrix<A, B, C>について、
Aはfloatやdoubleなど、要素の型を指定します。
Bは行数、Cは列数を指定しますが、このとき、-1を指定すると未定にすることができます。
BとCが両方とも定数で指定された静的行列はコンパイル時にその大きさが矛盾していないか確認してもらえるので、実行時エラーを減らせるという利点があります。
反面、静的行列はスタック領域に保存されるので、ニューラルネットワーク用に大量に確保すると割と容易にスタックオーバーフローを起こすため、注意が必要です。
行列をたくさん作るときは、あえて動的な行列を定義するか、静的な行列をmake_sharedなどで保持すると良いと思います。
■環境
Visual Studio Community 2019 Version 16.4.0
Eigen 3.3.7