普段はC++を使っているのでDeep LearningもC++で実装したいと思っています。
しかしPythonで書かれている書籍やWebサイトはたくさんありますがC++で実装しているサイトはあまりないんですよね。Deep Learningは複雑な行列計算を必要とするため便利なライブラリがそろっているPythonはよく使われます。
C++にも「Eigen」という行列計算用のライブラリがあります。しかし情報が少ないためあまりメジャーではないかもしれません。このライブラリは非常に便利なのでC++で行列計算を行うならぜひ使用したいところ。
1. Eigenのダウンロード
※2025年12月、最新のダウンロード方法に更新
現在ダウンロード先がGitLabに移っているのですが、GitLabからダウンロードしようとするとプロジェクトの作成を要求されてしまいます。

そこでPowerShellを使って直接ダウンロードすることにします。
まずタスクバーで「powershell」と入力してPowerShellを起動します。

PowerShellが起動したら、Eigenをダウンロードしたいフォルダに移動し、以下のコマンドを入力します。

Invoke-WebRequest `
https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip `
-OutFile eigen-3.4.0.zip
するとダウンロードが始まり、指定したフォルダにZipファイルが作成されます。


これを任意のフォルダへ解凍します。
2. Visual Studioの設定
次にVisual Studioの設定を行います。
まずテスト用のプロジェクトを作成します。

今回はC++のコンソールアプリケーションを作成します。

プロジェクト名は「EigenProject」としました。

プロジェクトが作成されたら「プロジェクト→EigenProjectのプロパティ」を開きます。

すると図のような画面が表示されるので「構成プロパティ→全般→追加のインクルードディレクトリ」を選択して「編集」をクリックします。

追加のインクルードディレクトリを追加するための画面が表示されるので先ほど解凍したフォルダのフォルダパスを追加します。


Eigenはライブラリのインクルードのみで使用可能です。
3. 動作確認
実際に使用して動作するか確認してみます。
今回は2×2の行列に値を格納し、出力します。
#include <iostream>
#include <Eigen/Core> //Eigenのインクルード
using namespace std;
int main()
{
Eigen::MatrixXd mat;
// 2×2の行列を0で初期化
mat = Eigen::MatrixXd::Zero(2, 2);
// 各要素に1~4をセット
mat(0, 0) = 1;
mat(0, 1) = 2;
mat(1, 0) = 3;
mat(1, 1) = 4;
cout << "mat = [\n" << mat << "\n]"<< endl;
return 0;
}
3. 実行結果は以下の通り

今回は以上です。




コメント