Ubuntu18.04 TensorFlow 踩坑实录

初识 Tensorflow

TensorFlow 是一个端到端开源机器学习平台。它拥有一个全面而灵活的生态系统,其中包含各种工具、库和社区资源,可助力研究人员推动先进机器学习技术的发展,并使开发者能够轻松地构建和部署由机器学习提供支持的应用

  • TensorFlow 官网
  • TensorFlow Github
  • TensorFlow 掘金 —— 关于 TensorFlow 一些教程和文档
  • TensorFlow 中文社区
  • 关于TensorFlow

    TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

准备工作

  • 首先是准备工作,仔细确认一遍并记下自己的各种配置,避免之后再因为硬件上问题浪费时间
  • 对必须的文件等做好备份,原因不用多说,经常备份也是一种需要养成的习惯

正式开始安装

  • 先看看我的配置清单:

系统版本: Ubuntu 18.04.3 LTS 64位

cpu Intel® Core™ i5-7500 CPU @ 3.40GHz × 4
显卡 GeForce GTX 1660 Ti/PCIe/SSE2
内存 16G
  • 如果之后硬件部分有更新也会贴在这里
cpu 没钱
显卡 没钱
内存 没钱

安装一些需要的软件

NIVIDIA Driver和CUDA、CUDNN

Anaconda3 包管理器和环境管理工具

  • [推荐]
  • 可以帮助你解决软件包之间的冲突 你可根据不容的需求创建不同的虚拟环境,并为它们安装不同的软件包
    • 例如为 ROSTensorFlow 分别创建 Python2Python3 的虚拟环境
  • 安装 Anaconda3 🐍
  • Anaconda3 的基本使用
命令 code
显示conda命令列表 conda help
查看所有虚拟环境 conda env list
查看所有安装包 conda list
创建新环境 conda create --name <env_name> <pak_name>(=version)
激活虚拟环境 conda activate env_name
删除虚拟环境 conda remove --name env_name --all
查看指定虚拟环境下的package conda list --name env_name
复制一个环境 conda create --name [env_name] -- clone [clone_env_name]
  • Anaconda3 添加清华源——查看帮助文档
  • sudo gedit ~/.condarc 打开 ~/.condarc 文件在其中添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

Pycharm

一款用过就不想换的Python编辑器

  • [推荐]
  • 安装 Pycharm
    • 可以直接从 snap 商店安装 sudo snap install pycharm-community --classic
    • [推荐]可以到官网下载教育版
  • Pycharm 可以通过一些设置达到美化以及便利使用,多摸索就能找到最适合自己的方式

安装TensorFlow

TensorFlow创建一个独立的虚拟环境,防止与其余软件包相互冲突
  • conda create -n tf-gpu python=3.7
  • conda activate tf-gpu

安装 TensorFlow 有两种方式

[方法一]通过 pip 安装软件包

  • [推荐]
  • 这个方法较为简单,适合使用python作为开发工具,对网络进行训练和简单测试
  • pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu
    • 这样安装基本不会出现软件包之间的以来的问题,只需保持网络畅通即可

[方法二]从源码编译

  • 我通过源码编译是因为需要使用 TensorFlowC++ 接口
  • 此方法较为复杂,也比较容易出现各种问题
    • 不过不要怕,冲就完事了 —— 先浏览官网文档
    • 可以到这里寻找测试通过的工具链版本,并进行对应版本安装
  • 根据所选版本对应的工具链切换 gcc/g++ 版本
    • 可以 ls /usr/bin/gcc* 查看已有的 gcc 版本,如果已有需要的版本,则不需要安装,直接替换符号链接即可
    1
    2
    3
    4
    5
    6
    7
    sudo apt-get install -y gcc-<version>
    sudo apt-get install -y g++-<version>
    cd /usr/bin
    sudo rm gcc
    sudo ln -s gcc-<version> gcc
    sudo rm g++
    sudo ln -s g++-<version> g++
  • 先获取 TensorFlow 源码
    1
    2
    3
    4
    cd ~/workspace
    git clone https://github.com/tensorflow/tensorflow.git
    cd tensorflow/
    git checkout <branch-version>
安装 bazel
  • 打开 tensorflow/configure.py 可以找到这样的语句
    1
    2
    _TF_MIN_BAZEL_VERSION = '2.0.0'
    _TF_MAX_BAZEL_VERSION = '2.0.0'
    • '' 里的版本取决于你想要编译的 TensorFlow 版本,不同版本所对应的 bazel 也是不同
    • Github 下载对应的 bazel 版本
      • 这里推荐下载 .sh 脚本进行安装
      1
      2
      sudo chmod a+x bazel-<version>-installer-linux-x86_64.sh
      sh bazel-<version>-installer-linux-x86_64.sh --user
      • 安装完成之后将 bazel 添加到环境变量
      • sudo gedit ~/.bashrc 打开 ~/.bashrc 文件
      • 在最后加入 export PATH="$PATH:$HOME/bin" 保存退出
      • source ~/.bashrc
安装各种依赖项
  • protobuf
    • 打开 tensorflow/tensorflow/workspace.bzl 可以找到这样的语句
      1
      #<xxx> is based on 3.8.0 with a fix for protobuf.bzl.
    • 可以看到 protobuf 对应的版本为 3.8.0

安装Keras

  • [推荐]
  • 直接通过 pip 安装最新版本即可
    1
    2
    conda activate tf-gpu
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple Keras
  • Keras 的API更加简洁,使用上更加友好,并且是基于 TensorFlow