pytorch有几个优点:
(1)强大的python接口,便于实验,比起tensorflow方便
(2)动态图计算,写网络就像写普通的加减乘除表达式一样,灵活组建网络,便于调试,mxnet等frame work也借鉴了这种模式,在这鄙视一下tensorflow,久久不支持动态图,直到去年2.0才效仿了动态图,美其名曰eager execution.
pytorch的c++接口也发布了(libtorch),便于c++平台环境和使用条件下的部署,但是,如果你是从官网上直接下载的release版本的话,有可能在你的系统下不能运行,libtorch.so根本就加载不成功,报错(还没到进入main函数就退出(ง •̀_•́)ง),主要原因是,本地的gcc版本太低,glibc版本低.
那么,两种方法解决:
(1)升级gcc版本:
pytorch实际是推荐最低编译要求是gcc4.9,但我的gcc版本是4.8.5
推荐使用scl方式升级,不会影响原有的系统和gcc,而且方便升级,例如:
yum install centos-release-scl -y
yum install devtoolset-3-toolchain -y // 此处是升级到gcc4.9.2
升级成功后,执行如下命令,切换gcc版本:
scl enable devtoolset-3 bash // 切换到4.9.2
但是我试了,libtorch.so还是加载失败,索性升级到5.3.1,问题解决:
yum install centos-release-scl -y
yum install devtoolset-4-toolchain -y // 此处是升级到gcc5.3.1
scl enable devtoolset-4 bash // 切换到5.3.1
(2)改用gcc4.8.5编译:
有时候,升级gcc的话,也比较不方便,即便是scl方式升级,因为生产环境的gcc都是4.8.5,不方便scl enable切换,那么我们可以直接用gcc4.8.5,从pytorch源码编译libtorch.
编译详见文档:https://github.com/pytorch/pytorch/blob/master/docs/libtorch.rst