虚拟机配置
- RHEL 7.1
- NAT方式联网
安装过程
1 . 由于RHEL是企业版本,未注册不可以使用它自带的yum源,所以我们需要添加可用的yum源
- local源
mkdir /mnt/cdrom
mount -o loop /dev/cdrom /mnt/cdrom
cd /etc/yum.repos.d/
vi local.repo
[local]
name=local
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
其中gpgcheck=0让其不用进行gpk检查,enabled=1让其可用
- 163源
vi 163.repo
[163]
name=163
baseurl=http://mirrors.163.com/centos/7/os/x86_64/
gpgcheck=0
enabled=1
- 其他rpm源
rpm -vih http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
2 . 安装依赖包
- python-devel
yum install python-devel
- python-pip
==坑1==
yum install python-pip
在运行上述命令后会出现如下错误
--> Finished Dependency Resolution
Error: Package: python-pip-7.1.0-1.el6.noarch (epel)
Requires: python(abi) = 2.6
Installed: python-2.7.5-16.el7.x86_64 (@anaconda/7.1)
是因为RHEL7.1自带的python版本为2.7,并且TensorFlow也只支持2.7,但可用的yum源里只有支持python2.6版本的,所以会出现依赖问题
解决方案:自己安装pip =.=
tar -zvxf pip-1.5.4.tar.gz
cd pip-1.5.4
python setup.py install
此时便可以使用pip了
3 . 安装Tensorflow
==坑2==
- 根据官方文档,执行pip命令
pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
但执行后会报很长很长的错误,拉到最下面,看到
RuntimeError: Broken toolchain: cannot link a simple C program
经google后得知,这是在pip在安装numpy时发生的错误,而stackflow上给出的解决方案,比如
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install --upgrade numpy
Downloading/unpacking numpy
在我这还是会报同样的错误,然后在不起眼的角落看到了一个解决方案
pip install --upgrade pip
升级到9.0.1后执行
pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
然后...就神奇般的好了
==坑3==
当然...这里还是不要图省事看中文社区的文档了...中文文档还停留在0.5的版本,而到后来研究分布式部署时发现0.8版本以前的TensorFlow不支持分布式,只能卸了重新装
所以直接执行(用豆瓣镜像很快)
pip install -i https://pypi.doubanio.com/simple/ tensorflow
4.demo
>>>import tensorflow as tf
>>> hello = tf.constant('hello,tensorflow!')
>>> sess = tf.Session()
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 1
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 1
>>> print sess.run(hello)
hello,tensorflow!
>>> a = tf.constant(10)
>>> b=tf.constant(32)
>>> print sess.run(a+b)
42
to be continued..