torch7是一个科学计算框架、支持GPU机器学习算法库。它借助简单的脚本语言LuaJTI和基础C/CUDA实现,它易于使用并且有高效的计算性能。
下面是一些核心特点:
Torch的目标是在构建科学算法的过程中具有最大的灵活性和最快的速度,同时使过程极其简单。Torch在社区学习,机器视觉,计算机视觉,信号处理,并行处理,图像,视频,音频和网络等方面均由社区驱动的软件包组成,它建立在Lua社区之上。
Torch的核心是易于使用的流行神经网络和优化库,同时在实现复杂的神经网络拓扑结构方面具有最大的灵活性。 可以构建神经网络的任意图,并以有效的方式在CPU和GPU上将它们并行化。
首先安装cmake环境,我们这里推荐使用cmake-3.14以上的版本。这里使用到了cmake-3.16.5版本 下载地址
笔者这里的系统环境是64位ubuntu,下载cmake-3.16.5-Linux-x86_64.tar.gz。
下载完成之后,安装cmake环境
cd ~
tar -xcvf cmake-3.16.5-Linux-x86_64.tar.gz
添加环境变量
nano ~/.bashrc
export PATH=/home/asus/cmake-3.8.2-Linux-x86_64/bin:$PATH
使得环境变量生效
source ~/.bashrc
查看cmake版本
cmake --version
接下来我们开始安装torch7环境
CUDA10.0以下的环境选择
git clone https://github.com/torch/distro.git ~/torch --recursive
CUDA10.0以上的环境选择
git clone https://github.com/nagadomi/distro ~/torch --recursive
进入torch文件夹下安装torch依赖项
cd torch
bash install-deps
下一步进行安装
bash install.sh #或者是 ./install.sh
安装过程中会出现readline.o库文件找不到的情况,安装libreadline-dev依赖包j即可:
lua.c:67:31: fatal error: readline/readline.h: No such file or directory
sudo apt-get install libreadline-dev
很多时候,由于安装torch官网上给出的版本,在编译环境的过程中出现找不到CUDA_cublas_device_LIBRARY/CUDA_cublas_LIBRA变量:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_cublas_device_LIBRARY (ADVANCED)
很多教程上说要改变cmake版本,可是试过几次之后都出现失败情况,最后在github上找到了CUDA10.0以上版本的torch7库。
最后出现
Do you want to automatically prepend the Torch install location to PATH and LD_LIBRARY in your /home/asus/.bashrc?(yes/no)
[yes] >>>
yes
键入yes。
使得环境变量生效
source ~/.bashrc
输入:th测试是否安装成功,当出线如下标识说明已成功安装:
另外,无CUDA安装Torch7可以直接按照官网上的教程来安装即可。
在调用torch.inverse(tensor)过程中,出现了一个问题,即getrf : Lapack library not found in compile time。出现这个问题的主要原因是由于没有安装openBLAS库。openBLAS库是一个基于C和fortran的矩阵运算库。所以由以下方法安装openBLAS库:
首先确定操作系统中必须有gfortran编译环境。编译openBLAS需要较低版本的gfortran变异环境。如果没有,则以下命令进行安装:
sudo apt-get install gfortran
在笔者的操作系统中,gfortran环境是gfortran-9环境,但是在编译过程中出现了如下问题:
/usr/bin/x86_64-linux-gnu-ld: 找不到 -lgfortran
这主要的原因就是没有进行编译器降级处理,建议小于gfortran-7版本。笔者在使用软件仓库查找的时候,只有最低版本的gfortran-7,所以安装了gfortran-7版本:
apt-get search gfortran
sudo apt-get install gfortran-7
sudo mv /usr/bin/gfortran /usr/bin/gfortran.bak #进行备份处理
sudo ln -s gfortran gfortran-7 #进行软链接操作
接下来安装openBLAS:
git clone https://github.com/xianyi/OpenBLAS.git
cd ~/OpenBLAS
make NO_AFFINITY=1 USE_OPENMP=1 -j4
sudo make PREFIX=/usr/local/OpenBLAS install #默认是/opt/OpenBLAS.
sudo ln -s /opt/OpenBLAS/lib/libopenblas.so.0 /usr/lib/libopenblas.so.0
安装成功后,luarocks install torch 可能找不到OpenBLAS,需要定义路径再进行torch安装:
CMAKE_LIBRARY_PATH=/usr/local/OpenBLAS/include:/usr/local/OpenBLAS/lib:$CMAKE_LIBRARY_PATH
luarocks install torch
# 或者是在bashrc文件中定义变量CMAKE_LIBRARY_PATH,或者是在安装torch之前定义此变量值
这样就可以使用了
还有一个问题就是,在使用nngraph库的时候,必须包含有Graphviz库支持,否则在使用image库显示的时候会出现以下问题:
/home/asus/torch/install/share/lua/5.1/graph/graphviz.lua:157: graphviz library could not be loaded.
stack traceback:
[C]: in function 'error'
/home/asus/torch/install/share/lua/5.1/graph/graphviz.lua:157: in function 'graphvizFile'
/home/asus/torch/install/share/lua/5.1/graph/graphviz.lua:197: in function 'dot'
[string "_RESULT={graph.dot(mlp.fg,"MLP")}"]:1: in main chunk
[C]: in function 'xpcall'
/home/asus/torch/install/share/lua/5.1/trepl/init.lua:661: in function 'repl'
...asus/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:204: in main chunk
[C]: at 0x5566d436a0e0
所以我们必须安装Graphviz库:
sudo apt-get install graphviz -y
安装成功之后,可能依旧不会正常显示,有可能出现以下的错误信息:
/home/asus/torch/install/share/lua/5.1/trepl/init.lua:389: module 'qt' not found:No LuaRocks module found for qt
no field package.preload['qt']
no file '/home/asus/.luarocks/share/lua/5.1/qt.lua'
no file '/home/asus/.luarocks/share/lua/5.1/qt/init.lua'
no file '/home/asus/torch/install/share/lua/5.1/qt.lua'
no file '/home/asus/torch/install/share/lua/5.1/qt/init.lua'
no file './qt.lua'
no file '/home/asus/torch/install/share/luajit-2.1.0-beta1/qt.lua'
no file '/usr/local/share/lua/5.1/qt.lua'
no file '/usr/local/share/lua/5.1/qt/init.lua'
no file '/home/asus/.luarocks/lib/lua/5.1/qt.so'
no file '/home/asus/torch/install/lib/lua/5.1/qt.so'
no file '/home/asus/torch/install/lib/qt.so'
no file './qt.so'
no file '/usr/local/lib/lua/5.1/qt.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
[C]: in function 'error'
/home/asus/torch/install/share/lua/5.1/trepl/init.lua:389: in function 'require'
/home/asus/torch/install/share/lua/5.1/image/init.lua:1559: in function 'display'
[string "_RESULT={image.display(l)}"]:1: in main chunk
[C]: in function 'xpcall'
/home/asus/torch/install/share/lua/5.1/trepl/init.lua:661: in function 'repl'
...asus/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:204: in main chunk
[C]: at 0x5578d20d50e0
信息显示,在显示图像的时候缺少qtlua支持库。所以我们使用luarocks下载并安装luaqt库:
luarocks install qtlua
luarocks install qttorch
最后查看qlua的目录
which qlua
/home/asus/torch/install/bin/qlua
即可以正常使用qlua