前言
Pytorch我们都熟悉,是一个优秀的深度学习的运行库,但我们可能也知道Pytorch
的前身torch
。Torch
也是一个优秀的深度学习库,运行语言是lua语言。既然我们有了Pytorch,为什么还要装torch呢?
很简单:
- Torch框架和Pytorch框架类似,熟悉了Pytorch学习torch轻而易举
- Torch框架的设计也很优秀,自定义化相比Pytorch更灵活
- 很多优秀的项目,或者说很多最近的项目很多都是使用Torch编写的
说了这么多,开始安装吧!
安装
以下安装环境在Ubuntu16.04。
因为我们安装torch需要运行在GPU上,首先应该安装好Cuda9.1和cudnn。
相关安装cuda
和cudnn
教程:
https://cloud.tencent.com/developer/article/1150031
https://cloud.tencent.com/developer/article/1150185
安装搭配好环境后就可以进行安装torch了。
首先自己创建一个文件夹叫做torch
,一般我创建的地址为:home/prototype/torch/
。
cd到当前的文件夹,从github下载源代码:
代码语言:javascript复制git clone https://github.com/torch/distro.git . --recursive
下载好后,安装依赖包然后,安装源文件:
代码语言:javascript复制./install-deps
./install.sh
因为我们使用的是cuda9.0以上,如果直接安装torch的话需要遇到这种问题:
代码语言:javascript复制...
[ 15%] Building NVCC (Device) object lib/THC/CMakeFiles/THC.dir/THC_generated_THCTensorMathReduce.cu.o
2 errors detected in the compilation of "/tmp/tmpxft_00002141_00000000-4_THCTensorMath.cpp4.ii".
CMake Error at THC_generated_THCTensorMath.cu.o.cmake:267 (message):
Error generating file
/home/ubuntu/torch/extra/cutorch/build/lib/THC/CMakeFiles/THC.dir//./THC_generated_THCTensorMath.cu.o
lib/THC/CMakeFiles/THC.dir/build.make:112: recipe for target 'lib/THC/CMakeFiles/THC.dir/THC_generated_THCTensorMath.cu.o' failed
make[2]: *** [lib/THC/CMakeFiles/THC.dir/THC_generated_THCTensorMath.cu.o] Error 1
make[2]: *** Waiting for unfinished jobs....
^Clib/THC/CMakeFiles/THC.dir/build.make:105: recipe for target 'lib/THC/CMakeFiles/THC.dir/THC_generated_THCTensorCopy.cu.o' failed
make[2]: *** [lib/THC/CMakeFiles/THC.dir/THC_generated_THCTensorCopy.cu.o] Interrupt
lib/THC/CMakeFiles/THC.dir/build.make:140: recipe for target 'lib/THC/CMakeFiles/THC.dir/THC_generated_THCTensorMathPairwise.cu.o' failed
make[2]: *** [lib/THC/CMakeFiles/THC.dir/THC_generated_THCTensorMathPairwise.cu.o] Interrupt
CMakeFiles/Makefile2:172: recipe for target 'lib/THC/CMakeFiles/THC.dir/all' failed
make[1]: *** [lib/THC/CMakeFiles/THC.dir/all] Interrupt
Makefile:127: recipe for target 'all' failed
make: *** [all] Interrupt
遇到这种错误是因为最新版的cuda和torch不兼容的问题,我们需要设置一下环境变量:
代码语言:javascript复制export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"
设置好之后,执行:
代码语言:javascript复制 ./clean.sh
清除之前的安装文件。
继续使用命令:./install.sh
安装。
安装编译需要一会时间。
安装好后,会提示设置环境变量,输入yes就行。
然后执行source ~/.bashrc
激活相应的环境变量。
这是在终端输入th就可以呼出torch的控制界面:
代码语言:javascript复制prototype@prototype-X299-UD4-Pro:~$ th
______ __ | Torch7
/_ __/__ ________/ / | Scientific computing for Lua.
/ / / _ / __/ __/ _ | Type ? for help
/_/ ___/_/ __/_//_/ | https://github.com/torch
| http://torch.ch
th>
相关组件
配套torch
的相关组件我们一般是Image
图像处理库和Loadcaffe
这个读取caffe
预训练model
的库。
安装Image图像处理库很简单:
代码语言:javascript复制luarocks install image
安装loadcaffe的时候可能会需要问题:
代码语言:javascript复制luarocks install loadcaffe
会遇到:
代码语言:javascript复制-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c
-- Check for working CXX compiler: /usr/bin/c -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found Torch7 in /home/adityac/torch/install
-- Could NOT find PROTOBUF (missing: PROTOBUF_LIBRARY PROTOBUF_INCLUDE_DIR)
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:
PROTOBUF_LIBRARY (ADVANCED)
linked by target "loadcaffe" in directory /tmp/luarocks_loadcaffe-1.0-0-7097/loadcaffe
-- Configuring incomplete, errors occurred!
make: *** No targets specified and no makefile found. Stop.
Error: Build error: Failed building.
这是我们缺少相应的环境包:
代码语言:javascript复制sudo apt-get install libprotobuf-dev protobuf-compiler
安装好这个再安装loadcaffe
就没问题了。
这时就可以愉快地使用torch了。
下篇我会讲解如何已经学会Pytorch
的基础上如何快速入门torch
。
参考资料
https://github.com/szagoruyko/loadcaffe/issues/76
https://github.com/torch/cutorch/issues/797