查看原文
其他

干获|详解深度学习框架——TensorFlow

2017-01-25 全球人工智能


2015 年 11 月 9 日,谷歌宣布对 TensorFlow 开源。随后,TensorFlow 成为了当今世 界最流行的机器学习软件之一,目前被广泛用于研究、教育和生产等各个领域。这一年 里,TensorFlow 的不断被优化,TensorFlow 的机器智能地位已显得举足轻重。我们希望帮 助 TensorFlow 的新、老用户提高使用 TensorFlow 的能力,充分利用该库最强大的功能! 考虑到不同的读者基础不同,本文将对机器学习读者最关心的几个部分对 TensorFlow 充 分介绍:八大机器学习库的对比、TensorFlow 的优势、什么时候使用 TensorFlow、 TensorFlow 的安装。在下一文中,将深入 TensorFlow 的语法、机器学习模型。


  1. 八大机器学习框架的对比:

    (1)  TensorFlow:深度学习最流行的库之一,是谷歌在深刻总结了其 前身 DistBelief 的经验教训上形成的;它不仅便携、高效、可扩 展,还能再不同计算机上运行:小到智能手机,大到计算机集群都 能;它是一款轻量级的软件,可以立刻生成你的训练模型,也能 重新实现它;TensorFlow 拥抱创新,有强大的社区、企业支持, 因此它广泛用于从个人到企业、从初创公司到大公司等不同群体。

    (2) Caffe: 卷积神经网络框架,专注于卷积神经网络和图像处理,是 用 C ++语言写成的。

    (3)  Chainer: 一个强大、灵活、直观的机器学习 Python 软件库,能 够在一台机器上利用多个 GPU,是由深度学习创业公司 Preferred Networks 开发;Chainer 的设计基于 define by run 原 则,也就是说,该网络在运行中动态定义,而不是在启动时定 义。

    (4)  CNTK: 微软研究人员开发的用于深度神经网络和多 GPU 加速技 术的完整开源工具包。微软称 CNTK在语音和图像识别方面,比 谷歌的 TensorFlow 等其它深度学习开源工具包更有优势。

    (5) Deeplearning4j: 专注于神经网络的 Java 库,可扩展并集成 Spark,Hadoop 和其他基于 Java 的分布式集成软件。

    (6) Nervana Neo: 是一个高效的 Python 机器学习库,它能够在单个 机器上使用多个 GPU。

    (7) Theano: 是一个用 Python 编写的极其灵活的 Python 机器学习 库,用它定义复杂的模型相当容易,因此它在研究中极其流行。

    (8) Torch: 是一个专注于 GPU 实现的机器学习库,得到了几个大公 司的研究团队的支持。


  2. TensorFlow 的优势:

    (1)可用性

    TensorFlow 工作流程相对容易,API 稳定,兼容性好,并且 TensorFlow 与 Numpy 完美结合,这使大多数精通 Python 数据科学家很容易上手。与其他一些库不同,TensorFlow 不需要任 何编译时间, 这允许你可以更快地迭代想法。在 TensorFlow 之上 已经建立了多个高级 API,例如 Keras 和 SkFlow,这给用户使用 TensorFlow 带来了极大的好处


    (2)灵活性

    TensorFlow 能够在各种类型的机器上运行,从超级计算机到嵌入式 系统。它的分布式架构使大量数据集的模型训练不需要太多的时 间。TensorFlow 可以同时在多个 CPU,GPU 或者两者混合运行。


    (3)效率

    自 TensorFlow 第一次发布以来,开发团队花费了大量的时间和努力 来改进 TensorFlow 的大部分的实现代码。 随着越来越多的开发人 员努力,TensorFlow 的效率不断提高。


    (4)  支持

    TensorFlow 由谷歌提供支持,谷歌投入了大量精力开发 TensorFlow,它希望 TensorFlow 成为机器学习研究人员和开发人 员的通用语言。此外,谷歌在自己的日常工作中也使用 TensorFlow,并且持续对其提供支持,在 TensorFlow 周围形成了 一个强大的社区。谷歌已经在 TensorFlow 上发布了多个预先训练好 的机器学习模型,他们可以自由使用。


3. TensorFlow 的安装:

为了满足安装 TensorFlow 的依赖支持工具,我们将使用 virtualenv 来创建一个虚拟 Python 环境。首先,我们需要确保与 Virtualenv 一 起安装了 pip,Python 的包管理器。 运行以下命令进行安装(取决 于用户的操作系统)
 
 
Linux-64 用户


在终端(同时按住 ctrl+Alt+t 启动)输入以下命令:


Python 2.7 用户
 $ sudo apt-get install python-pip python-dev python-virtualenv(注意所有的$符号不需要输入)

Python 3 用户
 $ sudo apt-get install python3-pip python3-dev python3-virtualenv


现在让我们创建一个包含这个环境的目录:

$ sudo mkdir ~/env

接下来,我们将使用 virtualenv 命令创建环境。 在这个例子中,它 位于〜/ env / tensorflow。使用如下命令:

$ virtualenv --system-site-packages ~/env/tensorflow

然后,使用 source 激活环境:

$ source ~/env/tensorflow/bin/activate

(然后注意你敲入回车后开始出现了“tensorflow”指示符)

然后直接输入 deactivate 关闭。

由于你将经常使用虚拟环境,因此创建一个快捷方式启动它,而不是 每次必须写出整个源。这下一个命令将一个 bash 别名添加到〜 / .bashrc 文件,这时只要在你想启动它时键入 tensorflow 即可:

$ sudo printf '\nalias tensorflow="source ~/env/tensorflow/bin/activate"' >> ~/.bashrc
 
特别提醒:启动终端后,最好先输如命令:sudo –i,然后会提醒你输入密码,linux 输入密码一 般不会显示出来,记住你的密码输入即可。


以下均是针对 python2.7 用户:

接下来安装“简易版”的 tensorflow,使用如下命令:

$ pip install --upgrade

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27none-linux_x86_64.whl
 
安装 Jupyter Notebook(先安装 ipython):

执行以下命令:先在终端中输入输入 sudo –i,然后输入回车,再根据 提示输入密码,最后输入 tensorflow 启动,然后再执行以下安装,以 防出现错误

$ sudo python2 -m pip install ipykernel

$ sudo python2 -m ipykernel install

$ sudo apt-get install build-essential

$ sudo pip install jupyter

安装 matplotlib:
$ sudo apt-get build-dep python-matplotlib python-tk
 
最后,让我们检查安装是否成功。创建一个新目录 tf_notebooks,输入该目录并运行 jupyter notebook。
 
打开终端,输入下面命令,打开 jupyter notebooks:

  sudo –i,再回车

输入用户密码,再回车

$后输入:tensorflow,再回车

然后$后面继续输入:mkdir tf-notebooks,再回车

$后面继续输入:cd tf-notebooks,再回车

$后面继续输入:jupyter notebook,再回车

最后打开了如下界面:



本机选择了 Python 2,输入了如下代码并运行如下结果:



好了,本文全面讲解了 TensorFlow 的特点及其在机器学习领域内的 优势,并一步一步的指导你如何去安装 tensorflow,并使用它。在 接下来的章节中,将带领你一步步地走向深度学习,并怎么利用 tensorflow 构建深度学习模型。另外,本文虽然只是在 Linux 上对 tensorflow 进行了安装,同样在 windows 上,仍然可以用上述的方 法,前提是在 windows 上安装虚拟机,然后装上 ubuntu系统。对 Mac OS X 用户而言,安装 tensorflow 则更容易。附上安装指导地址:

https://www.tensorflow.org/versions/master/get_started/os_setup.html#installationfor-mac-os-x


4. 深入阅读:

(1) https://www.tensorflow.org/,提供了最新的文档、API和学习指导。

(2) https://github.com/tensorflow/tensorflow,你可以对tensorflow 贡献你的智慧,也可以查看源代码。

(3) https://github.com/tensorflow/models,根据个人的目标, 你可以随时重用这些模型。

(4) https://research.googleblog.com/,提供来自谷歌的关于 tensorflow 的最新应用与更新。

(5) https://www.kaggle.com/,在这里你可以找到大量公共数据集,是目前线上认可度最高,参与人数最多的线上竞赛平台。

(6) https://www.data.gov/,美国的门户网站,用于查找全美的公共数据集。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存