u012426662的专栏

自己折腾了一天终于装好了RNNLIB,现在总结一下自己的安装过程,,供大家参考。

RNNLIB可以用来做语音识别、手写字符识别,由大牛Alex Graves编写,专门做RNN、LSTM的研究。他的主页~graves/

本文参考了博文 。但是根据他的指导步骤还是出现了各种错误,在他的基础上,自己写一个细致的说明。

1、首先下载安装包rnnlib.tar.gz,网址 。

2、预安装软件

apt-get install GCC/G++ apt-get install automake apt-get install netcdf-bin

apt-get install python-netcdf apt-get install libboost-dev

3、从官网下载netcdf-C、netcdf-C++,网址

安装netcdf-C:

解压、cd解压后的文件夹、./configure –disable-dap –disable-netcdf-4、make、make install

安装netcdf-C++:

解压、cd解压后的文件夹、CPPFLAGS=-I/$youpath/netcdf-4.3.2/include ./configure 、CPPFLAGS=-I/$yourpath/netcdf-4.3.2/include LDFLAGS=-L/usr/local/netcdf/lib make 、make install

4、安装RNNLib

解压之后, ./configure,make,make install

在make的过程中出现了报错,如果是找不到头文件,大家自行解决。我遇到的两个最重要的报错是:源代码出错,共两处。

一是:Helper.hpp文件出错,修改如下:

把这四个函数定义拷贝到本文件的最前面,放到宏定义之后,大概在160行之后。然后注释掉原来位置的代码。出错的原因是这几个函数在被调用之前没有声明,即编译器找不到这几个函数,所以要放到文件的前面。

template<class R1, class R2> static size_t range_min_size (const R1& a, const R2& b){ return min(boost::size(a), boost::size(b));}template<class R1, class R2, class R3> static size_t range_min_size (const R1& a, const R2& b, const R3& c){ return min(min(boost::size(a), boost::size(b)), boost::size(c));}template<class R1, class R2, class R3, class R4> static size_t range_min_size (const R1& a, const R2& b, const R3& c, const R4& d){ return min(min(min(boost::size(a), boost::size(b)), boost::size(c)), boost::size(d));}template<class R1, class R2, class R3, class R4, class R5> static size_t range_min_size (const R1& a, const R2& b, const R3& c, const R4& d, const R5& e){ return min(min(min(min(boost::size(a), boost::size(b)), boost::size(c)), boost::size(d)), boost::size(e));}

二是:Container.hpp文件报错。修改如下:

大概158行左右的这个函数中,在resize函数之前加this->,红色行标出。

template<class R> Vector<T>& operator =(const R& r) { //resize(boost::size(r)); wwf 12.3修改 this->resize(boost::size(r));//wwf 12.3修改 copy(r, *this); return *this; }

然后再make,make install ,应该不会再出错。

至此,安装完毕,希望能帮到大家!

唯有讲述此间途经的美景,分享没有男主角的相片。

u012426662的专栏

相关文章:

你感兴趣的文章:

标签云: