のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

Ublasの拡張ライブラリを少々更新しました。

Sponsored Links

皆さんこんにちは
お元気ですか。私は元気です。

さて、今日は以前作っていた拡張ライブラリを更新していたというお話です。
以前、作っていたものに更に更新をかけ、パワーアップさせました。

以前作っていたもの
追加の拡張内容

  1. vector の行ごと列ごとの平均を取得し、返す関数
  2. Sigmoid関数
  3. Softmax関数
  4. random(-1~1)までで作る関数

使い方はこんな感じ

実際の使い方

#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/ublas/lu.hpp>
#include <boost/numeric/ublas/triangular.hpp>
#include "UblasLibrary.hpp"

using namespace boost::numeric;
using namespace std;

int main (void) {
	ublas::matrix<double> mat(2,2);
	mat(0,0) = 4.0; mat(0,1) = 3.0;
	mat(1,0) = 2.0; mat(1,1) = 1.0;

	//平均値
	cout << "平均値を取得する" << endl;
	cout << ublas_func::mean_by_column(mat) << endl;
	cout << ublas_func::mean_by_rows(mat) << endl;

	//活性化関数
	cout << "sigmoid関数" << endl;
	cout << ublas_func::sigmoid(mat) << endl;
	cout << "softmax関数" << endl;
	cout << ublas_func::softmax(mat) << endl;

	cout << "乱数による生成" << endl;
	cout << ublas_func::generateVectorRandom(4) << endl;
	cout << ublas_func::generateMatrixRandom(3, 4) << endl;
}

出力

平均値を取得する
[2](3,2)
[2](3.5,1.5)
sigmoid関数
[2,2]((0.982014,0.952574),(0.880797,0.731059))
softmax関数
[2,2]((0.731059,0.268941),(0.731059,0.268941))
乱数による生成
[4](-0.999984,-0.736924,0.511211,-0.0826997)
[3,4]((0.0655345,-0.562082,-0.905911,0.357729),(0.358593,0.869386,-0.232996,0.0388327),(0.661931,-0.930856,-0.893077,0.0594004))