C++

プログラミング

【OpenCV】cv::Matとunsigned char*の相互変換

OpenCVのcv::Matクラスとunsigned char*の相互変換についてです。画像の入出力にOpenCVを使って画像処理自体は配列を直接操作したい場合があると思います。そのため、今回はcv::Matクラスと配列(符号なし8bitデ...
プログラミング

【C++】EigenのMatrixクラスの初期化方法

今回はEigenのリファレンスを参照してMatrixクラスの初期化方法についてまとめました。1. MatrixクラスMatrixクラスは行列を格納するためのクラスで、クラステンプレートとして以下のように定義されています。class Eige...
環境構築

【C++】OpenCV+Visual Studio 2022の環境構築

今回はOpenCVをVisual Studio2022で使用できるように設定していこうと思います。最近は「OpenCV」で検索してもPythonの記事ばかりですがここではC++版の環境構築について解説します。1. OpenCVのダウンロード...
環境構築

C++版PyTorch「LibTorch」の環境構築【Visual Studio】

Deep Learningを実際に使う場合はやはりライブラリに頼ることになると思うのでこちらの学習もしていこうと思います。特に最近は「PyTorch」と呼ばれるライブラリがメジャーだと思います。PyTorchはこちらのサイトからダウンロード...
プログラミング

【C++】Mnistデータセットを読み込みEigenで扱う

Mnistは手書き数字画像とラベルデータをまとめたデータセットで機械学習の性能評価などによく利用さます。Deep Learningの入門書ではPythonで扱われることが多いのですが、今回はC++で読み込みEigenで扱う形式に変換してみた...
プログラミング

【C++】ソフトマックス関数を実装してみる

今回はニューラルネットワークの出力層でよく使われる「ソフトマックス関数」を実装してみる。1. ソフトマックス関数ソフトマックス関数は以下の式で表される。\この式は出力n個に対してk番目の出力\(y_k\)を求めています。ソフトマックス関数は...
プログラミング

【C++】シグモイド関数を実装してみる

「ゼロから作るDeep Learning」という本を買ったのでこの本を参考に勉強していこうと思います。Pythonのソースコードもついているので参考にします。1. 活性化関数ニューラルネットワークは層を重ねることで非線形の問題も解くことがで...
プログラミング

【C++】Gnuplotを使ったグラフ描画機能をクラス化する

今後のためにグラフ描画用の関数をクラス化して他のプログラムに流用できるようにしておきたい。1. ヘッダーファイルヘッダーファイルはこちら。「classGnuplot」クラスとしてグラフ描画機能をまとめる。主な機能としては以下の通り。Gnup...
プログラミング

【C++】Gnuplotと連携してグラフを描画したい

Pythonであればmatplotlibなどグラフを描画してくれる便利なライブラリがあります。一方、C++でグラフを描画しようと思うとCSVなどにデータを出力してExcelなどで確認することになります。そこでGnuplot使ってC++でグラ...
環境構築

【C++】行列計算ライブラリ「Eigen」のインストール【Visual Studio】

普段はC++を使っているのでDeep LearningもC++で実装したいと思っています。しかしPythonで書かれている書籍やWebサイトはたくさんありますがC++で実装しているサイトはあまりないんですよね。Deep Learningは複...