Duanxx的Design abroad: C++矩阵运算库Eigen 概要

、概要

这两天想起来要做神经网络的作业了,要求用C++完毕神经网络的算法。

摆在面前的第一个问题就是,神经网络算法中大量用到了矩阵运算。可是C++不像matlab那样对矩阵运算有非常好的支持。本来准备自己写一个C++的矩阵运算的代码的,google了一下后。找到了几个不错的C++矩阵运算库,我选用的是Eigen这个C++矩阵运算库。


Eigen有很丰富的功能:


l  支持全部大小的矩阵运算,从非常小的大小固定的矩阵运算。到随意大的稠密矩阵的运算,甚至连稀疏矩阵的运算它也支持。


l  支持当前全部的标准数据类型。除了我们经常使用的整型、浮点型外。它同一时候还支持复数类型以及自己定义类型等等,详见:http://eigen.tuxfamily.org/dox/TopicCustomizingEigen.html#CustomScalarType


l  支持大量的矩阵分解和矩阵空间变换的操作,详见:

http://eigen.tuxfamily.org/dox/group__TopicLinearAlgebraDecompositions.html

http://eigen.tuxfamily.org/dox/group__TutorialGeometry.html


l  支持大量的专用模块。比方:非线性优化、多项式解法、FFT等等,可是这些专用模块并不在Eigen的源代码中,须要另外下载。详见:

http://eigen.tuxfamily.org/dox/unsupported/index.html


l  快速运算,基于Inter SSE 2/3/4指令集做了运算优化


、下载和安装

2.1 下载

Eigen的主页为:http://eigen.tuxfamily.org/index.php?title=Main_Page

         在写这篇文章的时候,Eigen的版本号已经到了3.3.2了。

         主页上就有最新版本号的Eigen的下载链接,或者直接使用以下的链接,就能够下载:

http://bitbucket.org/eigen/eigen/get/3.2.2.tar.bz2





下载后文件名称为eigen-eigen-1f059a5ac4ac。解压,并把文件名称改为eigen3,我把这整个文件考到了D:\Program Files下。

        


 

2.2 安装

         因为Eigen不过由一些头文件组成的,所以没有必要对Eigen进行编译,就能够直接使用,且平台无关。

         这里主要关心的是eigen3/Eigen目录,这个目录以下就是Eigen的源代码,也就是我们须要加入的头文件目录。

         在eigen3/unsupported目录以下的Eigen目录中。是Eigen的一些扩展功能的代码,须要的话,也能够加入这个头文件目录。

        

         这里我使用的是Vs2012做測试。新建一个空的project之后,配置一下project属性。这里我仅仅加入了Eigen的核心代码的路径。






 

、 測试

<span style="font-size:18px;">#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
 
int main()
{
         MatrixXdm(2,2);
         m(0,0)= 3;
         m(1,0)= 2.5;
         m(0,1)= -1;
         m(1,1)= m(1,0) + m(0,1);
         std::cout<< m << std::endl;
}
</span>





版权声明:本文博主原创文章。博客,未经同意不得转载。

posted @ 2015-10-12 11:18  lcchuguo  阅读(483)  评论(0编辑  收藏  举报