、概要

这两天想起来要做神经网络的作业了,要求用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>

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

Duanxx的Design abroad: C++矩阵运算库Eigen 概要的更多相关文章

  1. c++矩阵运算库Eigen简介

    C++矩阵运算库Eigen介绍 C++中的矩阵运算库常用的有Armadillo,Eigen,OpenCV,ViennaCL,PETSc等.我自己在网上搜了一下不同运算库的特点,最后选择了Eigen.主 ...

  2. Eigen学习笔记2:C++矩阵运算库Eigen介绍

    Eigen常规矩阵定义 1.使用 Eigen的使用在官网上有详细的介绍,这里对我学习过程中用到的基本操作进行介绍.首先是矩阵的定义.在矩阵类的模板参数共有6个.一般情况下我们只需要关注前三个参数即可. ...

  3. C++矩阵运算库推荐

    最近在几个地方都看到有人问C++下用什么矩阵运算库比较好,顺便做了个调查,做一些相关的推荐吧.主要针对稠密矩阵,有时间会再写一个稀疏矩阵的推荐. Armadillo:C++下的Matlab替代品 地址 ...

  4. C++矩阵运算库armadillo配置笔记

    前言 最近在用C++实现神经网络模型,优化算法需要用到矩阵操作,一开始我用的是boost的ublas库,但用着用着感觉很不习惯,接口不够友好.于是上网搜索矩阵运算哪家强,大神们都推荐armadillo ...

  5. 基于React Native的Material Design风格的组件库 MRN

    基于React Native的Material Design风格的组件库.(为了平台统一体验,目前只打算支持安卓) 官方网站 http://mrn.js.org/ Github https://git ...

  6. ElementUI(vue UI库)、iView(vue UI库)、ant design(react UI库)中组件的区别

    ElementUI(vue UI库).iView(vue UI库).ant design(react UI库)中组件的区别: 事项 ElementUI iView ant design 全局加载进度条 ...

  7. 异想家纯C语言矩阵运算库

    Sandeepin最近做的项目中需要在嵌入式芯片里跑一些算法,而这些单片机性能不上不下,它能跑些简单的程序,但又还没到上Linux系统的地步.所以只好用C语言写一些在高级语言里一个函数就解决的算法了, ...

  8. C++矩阵处理库--Eigen初步使用

      项目要进行比较多的矩阵操作,特别是二维矩阵.刚开始做实验时,使用了动态二维数组,于是写了一堆Matrix函数,作矩阵的乘除加减求逆求行列式.实验做完了,开始做代码优化,发现Matrix.h文件里适 ...

  9. C++矩阵库 Eigen 快速入门

    最近需要用 C++ 做一些数值计算,之前一直采用Matlab 混合编程的方式处理矩阵运算,非常麻烦,直到发现了 Eigen 库,简直相见恨晚,好用哭了. Eigen 是一个基于C++模板的线性代数库, ...

随机推荐

  1. c++里的类型转化

    c++里的类型转换种类 在c++里包含4种,static_cast,dynamic_cast,const_cast,reinterpret_cast. 4种类型 reinterpret_cast: 强 ...

  2. HBase经常使用操作之namespace

    1.介绍 在HBase中,namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database,方便对表在业务上划分.Apache HBase从0.98.0, 0.95.2两个版本号開始 ...

  3. HDU 1226 超级密码 (搜素)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1226 题意简单,本来是一道很简单的搜素题目. 但是有两个bug: 1.M个整数可能有重复的. 2.N可 ...

  4. 关于http接口开发中json格式数据编码问题处理

    关于http接口开发中json格式数据编码问题处理 在实际工作中,接口很多时候返回json格式,但有时返回的格式会有编码问题 假设如下接口:http://service.test.com/interf ...

  5. java中final的意义

    1.如果一个数据既是static又是final,那么它会拥有一块无法改变的存储空间. 2.final data: 当final用于基本数据类型时,final让其值(value)保持不变,但是当用于ob ...

  6. 【前端攻略】:玩转图片Base64编码(转)

    引言 图片处理在前端工作中可谓占据了很重要的一壁江山.而图片的Base64编码可能相对一些人而言比较陌生,本文不是从纯技术的角度去讨论图片的base64编码.标题略大,不过只是希望通过一些浅显的论述, ...

  7. 关于Hbase的cache配置

    关于Hbase的cache配置 在hbase中的hfilecache中,0.96版本号中新添加了bucket cache, bucket cache通过把hbase.offheapcache.perc ...

  8. Python入门(转)

    Python 简洁的语法和对动态输入的支持,再加上解释性语言的本质, 使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发 特点:简单.易学.免费.开源.高层语言.可移植 ...

  9. android平台TextView使用ImageSpan画廊GIF图像

    android-gif-drawable(https://github.com/koral--/android-gif-drawable/releases)开源项目---是一个蛮不错的android ...

  10. Android 解决Gallery下ScrollView滑动事件冲突

    在Gallery下,里面内容过长超出屏幕,这时我们可以用ScrollView来滚动,但是这样做了以后,会发现一个问题,Gallery的滑动事件和ScrollView的滑动事件起冲突,这时我们可以自定义 ...