TensorFlow的安装
基于Anaconda 安装TensorFlow Linux-CPU版
环境要求:Centos7,Glibc2.16以上
centos7安装bzip2 :yum install bzip2
1、安装Anaconda(Python的运行环境)
下载Anaconda的地址:官网http://www.continuum.io/downloads/
也可以在https://repo.continuum.io/archive/ 选择相应的版本下载
这里下载Anaconda3-4.2.0-Linux-x86_64.sh
2、进入Anaconda的下载目录执行
bash Anaconda3-4.2.0-Linux-x86_64.sh
3、安装提示,直接回车下一步,选择License文档,按q键,最后yes确认
输入anaconda的安装路径,直接回车是默认路径
4、安装完成之后配置环境变量,然后安装Anaconda Python3.5环境
1)建立一个 conda 计算环境名字叫tensorflow:
$ conda create -n tensorflow python=3.5
2)激活tensorflow环境,然后使用其中的 pip 安装 TensorFlow
$ source activate tensorflow
$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc0-cp35-cp35m-linux_x86_64.whl
3)安装成功后,每次使用 TensorFlow 的时候需要激活 conda 环境
当你不用 TensorFlow 的时候,关闭环境:
$ source deactivate
再次使用的时候再激活:
$ source activate tensorflow
5、运行TensorFlow
打开一个python终端 :
$ python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42
>>>
Windows版本安装:
1、安装anaconda
2、若是Anaconda3-4.2.0 则自带了python3.5 ,pip要求是9.0以上
3、直接执行pip install tensorflow 若是socket报错,则重试两次就好了
4、然后,就没有然后了,安装完成
====================================
若是出现报错如下情况:
import tensorflow as tf 问题报错:
ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19’ not found
(required by /root/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so)
1)检查了gcc版本:gcc --version ;
[root@hadoop-namenode-01 lib]# gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-17)
Copyright © 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2)$ strings /usr/lib64/libstdc++.so.6 |grep GLIBCXX 得到结果:
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
3) $ find / -name libstdc++.so.6*
/root/anaconda3/lib/libstdc++.so.6
/root/anaconda3/lib/libstdc++.so.6.0.19
/root/anaconda3/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6
/root/anaconda3/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6.0.19
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.13
可以看到,已经有libstdc++.so.6.0.19
说明虽然gcc已经更新到最新版,但是连接还是旧版本,所以只需要修改连接就可以了
解决方案步骤:
1) cp /root/anaconda3/lib/libstdc++.so.6.0.19 /usr/lib64
2) rm -rf /usr/lib64/libstdc++.so.6
3) ln -s /usr/lib64/libstdc++.so.6.0.19 /usr/lib64/libstdc++.so.6
报错2:
ImportError: /lib64/libc.so.6: version `GLIBC_2.16’ not found
(required by /root/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so)
归根结底问题:由于Linux内核不支持,版本太低!!!!
方法二:
一、正确调用指定GPU
我们在调用GPU时,并没有使用到指定“内存”,使用的是显存,这样就会导致我们在跑程序的时出现内存溢出
将下面的代码添加到代码中
os.environ['CUDA_DEVICE_ORDER'] = 'PCI_BUS_ID'
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
device = torch.device("cuda:2" if torch.cuda.is_available() else "cpu")#判断CUDA是否能使用,不可以就使用CPU
二、杀死进程
这里我们杀死进程要注意的是,杀死进程是否可以pass掉,不然会导致你有的程序终止掉,切记切记

kill id号
eg:

三、减小batchSize
每次读取的数据减小,或者说减小每次训练的数据大小
方法一:调整batch_size 一般为2的n次方,一般为4,如果不行,则pass
方法二:清除pytorch无用缓存,在代码总加入如下代码,亲测有效
import torch, gc
gc.collect()
torch.cuda.empty_cache()
方法四: 使用别人代码时
如果怎么修改,都会出现题中bug,甚至跑了几轮之后突然出现 cuda out of
memory,查看代码中是否存在一下代码(通常出现在main.py 或者数据加载的py文件中:
kwargs = {‘num_workers’: 6, ‘pin_memory’: True} if torch.cuda.is_available() else {}
将"pin_memory": True改为False,具体原因查看 原博主: