• TensorFlow


    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
    >>>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    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

    1. $ ls -al /usr/lib64/libstdc++.so.6
      lrwxrwxrwx. 1 root root 19 Feb 24 03:21 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13

    说明虽然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
    
    • 1
    • 2
    • 3

    二、杀死进程
    这里我们杀死进程要注意的是,杀死进程是否可以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,具体原因查看 原博主

  • 相关阅读:
    筛斗数据提取技术对企业决策过程的影响
    基础的SpringMvc开发
    rmq事务消息
    【医学分割】unet3+
    简单的镜面反射
    gopacket reassembly源码分析
    基于单片机的自动变速箱电控系统
    【毕业设计】基于单片机的墨水屏阅读器(单词卡) - 物联网 嵌入式
    代码出炉结构乱?Maven整理省心办。
    【Java进阶篇】第二章 Java数组(下篇) 二维数组
  • 原文地址:https://blog.csdn.net/pfl_327/article/details/126477184