0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TensorFlow是什么?如何启动并运行TensorFlow?

lviY_AI_shequ 来源:未知 作者:易水寒 2018-07-29 11:16 次阅读

TensorFlow 是一款用于数值计算的强大的开源软件库,特别适用于大规模机器学习的微调。 它的基本原理很简单:首先在 Python 中定义要执行的计算图(例如图 9-1),然后 TensorFlow 使用该图并使用优化的 C++ 代码高效运行该图。

最重要的是,Tensorflow 可以将图分解为多个块并在多个 CPUGPU 上并行运行(如图 9-2 所示)。 TensorFlow 还支持分布式计算,因此您可以在数百台服务器上分割计算,从而在合理的时间内在庞大的训练集上训练庞大的神经网络(请参阅第 12 章)。 TensorFlow 可以训练一个拥有数百万个参数网络,训练集由数十亿个具有数百万个特征的实例组成。 这应该不会让您吃惊,因为 TensorFlow 是 由Google 大脑团队开发的,它支持谷歌的大量服务,例如 Google Cloud Speech,Google Photos 和 Google Search。

当 TensorFlow 于 2015 年 11 月开放源代码时,已有许多深度学习的流行开源库(表 9-1 列出了一些),公平地说,大部分 TensorFlow 的功能已经存在于一个库或另一个库中。 尽管如此,TensorFlow 的整洁设计,可扩展性,灵活性和出色的文档(更不用说谷歌的名字)迅速将其推向了榜首。 简而言之,TensorFlow 的设计灵活性,可扩展性和生产就绪性,现有框架可以说只有其中三种可用。 这里有一些 TensorFlow 的亮点:

它不仅在 Windows,Linux 和 MacOS 上运行,而且在移动设备上运行,包括 iOSAndroid

它提供了一个非常简单的 Python API,名为 TF.Learn2(tensorflow.con trib.learn),与 Scikit-Learn 兼容。正如你将会看到的,你可以用几行代码来训练不同类型的神经网络。之前是一个名为 Scikit Flow(或 Skow)的独立项目。

它还提供了另一个简单的称为 TF-slim(tensorflow.contrib.slim)的 API 来简化构建,训练和求出神经网络。

其他几个高级 API 已经在 TensorFlow 之上独立构建,如Keras或Pretty Tensor。

它的主要 Python API 提供了更多的灵活性(以更高复杂度为代价)来创建各种计算,包括任何你能想到的神经网络结构。

它包括许多 ML 操作的高效 C ++ 实现,特别是构建神经网络所需的 C++ 实现。还有一个 C++ API 来定义您自己的高性能操作。

它提供了几个高级优化节点来搜索最小化损失函数的参数。由于 TensorFlow 自动处理计算您定义的函数的梯度,因此这些非常易于使用。这称为自动分解(或autodi)。

它还附带一个名为 TensorBoard 的强大可视化工具,可让您浏览计算图表,查看学习曲线等。

Google 还推出了云服务来运行 TensorFlow 表。

最后,它拥有一支充满热情和乐于助人的开发团队,以及一个不断成长的社区,致力于改善它。它是 GitHub 上最受欢迎的开源项目之一,并且越来越多的优秀项目正在构建之上(例如,查看https://www.tensorflow.org/或https://github.com/jtoy/awesome-tensorflow)。 要问技术问题,您应该使用http://stackoverflow.com/并用tensorflow标记您的问题。您可以通过 GitHub 提交错误和功能请求。有关一般讨论,请加入Google 小组。

在本章中,我们将介绍 TensorFlow 的基础知识,从安装到创建,运行,保存和可视化简单的计算图。 在构建第一个神经网络之前掌握这些基础知识很重要(我们将在下一章中介绍)。

安装

让我们开始吧!假设您按照第 2 章中的安装说明安装了 Jupyter 和 Scikit-Learn,您可以简单地使用pip来安装 TensorFlow。 如果你使用virtualenv创建了一个独立的环境,你首先需要激活它:

$ cd $ML_PATH #Your ML working directory(e.g., $HOME/ml)$ source env/bin/activate

下一步,安装 Tensorflow。

$ pip3 install --upgrade tensorflow

对于 GPU 支持,你需要安装tensorflow-gpu而不是tensorflow。具体请参见 12 章内容。

为了测试您的安装,请输入一下命令。其输出应该是您安装的 Tensorflow 的版本号。

$ python -c 'import tensorflow; print(tensorflow.__version__)'1.0.0

创造第一个图谱,然后运行它

import tensorflow as tf x = tf.Variable(3, name="x") y = tf.Variable(4, name="y") f = x*x*y + y + 2

这就是它的一切! 最重要的是要知道这个代码实际上并不执行任何计算,即使它看起来像(尤其是最后一行)。 它只是创建一个计算图谱。 事实上,变量都没有初始化.要求出此图,您需要打开一个 TensorFlow 会话并使用它初始化变量并求出f。TensorFlow 会话负责处理在诸如 CPU 和 GPU 之类的设备上的操作并运行它们,并且它保留所有变量值。以下代码创建一个会话,初始化变量,并求出f,然后关闭会话(释放资源):

# way1 sess = tf.Session() sess.run(x.initializer) sess.run(y.initializer) result = sess.run(f) print(result) sess.close()

不得不每次重复sess.run() 有点麻烦,但幸运的是有一个更好的方法:

# way2 with tf.Session() as sess: x.initializer.run() y.initializer.run() result = f.eval() print(result)

在with块中,会话被设置为默认会话。 调用x.initializer.run()等效于调用tf.get_default_session().run(x.initial),f.eval()等效于调用tf.get_default_session().run(f)。 这使得代码更容易阅读。 此外,会话在块的末尾自动关闭。

你可以使用global_variables_initializer()函数,而不是手动初始化每个变量。 请注意,它实际上没有立即执行初始化,而是在图谱中创建一个当程序运行时所有变量都会初始化的节点:

# way3 # init = tf.global_variables_initializer() # with tf.Session() as sess: # init.run() # result = f.eval() # print(result)

在 Jupyter 内部或在 Python shell 中,您可能更喜欢创建一个InteractiveSession。 与常规会话的唯一区别是,当创建InteractiveSession时,它将自动将其自身设置为默认会话,因此您不需要使用模块(但是您需要在完成后手动关闭会话):

# way4 init = tf.global_variables_initializer() sess = tf.InteractiveSession() init.run() result = f.eval() print(result) sess.close()

TensorFlow 程序通常分为两部分:第一部分构建计算图谱(这称为构造阶段),第二部分运行它(这是执行阶段)。 建设阶段通常构建一个表示 ML 模型的计算图谱,然后对其进行训练,计算。 执行阶段通常运行循环,重复地求出训练步骤(例如,每个小批次),逐渐改进模型参数。

管理图谱

您创建的任何节点都会自动添加到默认图形中:

>>> x1 = tf.Variable(1) >>> x1.graph is tf.get_default_graph() True

在大多数情况下,这是很好的,但有时您可能需要管理多个独立图形。 您可以通过创建一个新的图形并暂时将其设置为一个块中的默认图形,如下所示:

>>> graph = tf.Graph() >>> with graph.as_default(): ... x2 = tf.Variable(2) ... >>> x2.graph is graph True >>> x2.graph is tf.get_default_graph() False

在 Jupyter(或 Python shell)中,通常在实验时多次运行相同的命令。 因此,您可能会收到包含许多重复节点的默认图形。 一个解决方案是重新启动 Jupyter 内核(或 Python shell),但是一个更方便的解决方案是通过运行tf.reset_default_graph()来重置默认图。

节点值的生命周期

求出节点时,TensorFlow 会自动确定所依赖的节点集,并首先求出这些节点。 例如,考虑以下代码:

# w = tf.constant(3) # x = w + 2 # y = x + 5 # z = x * 3 # with tf.Session() as sess: # print(y.eval()) # print(z.eval())

首先,这个代码定义了一个非常简单的图。然后,它启动一个会话并运行图来求出y:TensorFlow 自动检测到y取决于x,它取决于w,所以它首先求出w,然后x,然后y,并返回y的值。最后,代码运行图来求出z。同样,TensorFlow 检测到它必须首先求出w和x。重要的是要注意,它不会复用以前的w和x的求出结果。简而言之,前面的代码求出w和x两次。所有节点值都在图运行之间删除,除了变量值,由会话跨图形运行维护(队列和读者也保持一些状态)。变量在其初始化程序运行时启动其生命周期,并且在会话关闭时结束。如果要有效地求出y和z,而不像之前的代码那样求出w和x两次,那么您必须要求 TensorFlow 在一个图形运行中求出y和z,如下面的代码所示:

# with tf.Session() as sess: # y_val, z_val = sess.run([y, z]) # print(y_val) # 10 # print(z_val) # 15

在单进程 TensorFlow 中,多个会话不共享任何状态,即使它们复用同一个图(每个会话都有自己的每个变量的副本)。 在分布式 TensorFlow 中,变量状态存储在服务器上,而不是在会话中,因此多个会话可以共享相同的变量。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8401

    浏览量

    132536
  • python
    +关注

    关注

    56

    文章

    4792

    浏览量

    84616
  • tensorflow
    +关注

    关注

    13

    文章

    329

    浏览量

    60527

原文标题:【翻译】Sklearn 与 TensorFlow 机器学习实用指南 —— 第9章 (上)启动并运行TensorFlow

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问ESP32如何运行TensorFlow模型?

    请问ESP32如何运行TensorFlow模型?
    发表于 07-09 07:30

    关于 TensorFlow

    的底层数据操作,你也可以自己写一点c++代码来丰富底层的操作。真正的可移植性(Portability)Tensorflow 在CPU和GPU上运行,比如说可以运行在台式机、服务器、手机移动设备等等。想要
    发表于 03-30 19:57

    本章的目的是让你了解和运行 TensorFlow!

    简介本章的目的是让你了解和运行 TensorFlow!在开始之前, 让我们先看一段使用 Python API 撰写的 TensorFlow 示例代码, 让你对将要学习的内容有初步的印象.这段很短
    发表于 03-30 19:58

    使用 TensorFlow, 你必须明白 TensorFlow

    TensorFlow 图描述了计算的过程. 为了进行计算, 图必须在 会话 里被启动. 会话 将图的 op 分发到诸如 CPU 或 GPU 之类的 设备 上, 同时提供执行 op 的方法. 这些方法
    发表于 03-30 20:03

    TensorFlow运行时无法加载本机

    您好,我想在AI DevCloud的计算节点中运行TensorFlow时出错。[u19741 @ c009-n031~] $ pythonPython 3.6.3 |英特尔公司| (默认,2018年
    发表于 10-19 12:00

    Anaconda之tensorflow:深度学习之Anaconda下安装tensorflow正确运行之史上最强攻略

    Anaconda之tensorflow:深度学习之Anaconda下安装tensorflow正确运行之史上最强攻略
    发表于 12-21 10:40

    深度学习框架TensorFlow&TensorFlow-GPU详解

    TensorFlow&TensorFlow-GPU:深度学习框架TensorFlow&TensorFlow-GPU的简介、安装、使用方法详细攻略
    发表于 12-25 17:21

    怎么运行Faster RCNN的tensorflow代码

    如何运行Faster RCNN的tensorflow代码
    发表于 06-15 09:25

    情地使用Tensorflow吧!

    和GPU上运行,比如说可以运行在台式机、服务器、手机移动设备等等。想要在没有特殊硬件的前提下,在你的笔记本上跑一下机器学习的新想法?Tensorflow可以办到这点。准备将你的训练模型在多个CPU上规模
    发表于 07-22 10:13

    TensorFlow是什么

    、Caffe 和 MxNet,那 TensorFlow 与其他深度学习库的区别在哪里呢?包括 TensorFlow 在内的大多数深度学习库能够自动求导、开源、支持多种 CPU/GPU、拥有预训练模型,支持常用
    发表于 07-22 10:14

    TensorFlow安装和下载(超详细)

    conda 环境: 该命令应提示: 根据要在 conda 环境中安装的 TensorFlow 版本,输入以下命令: 在命令行中输入 python,输入以下代码: 输出如下:在命令行中禁用
    发表于 07-22 10:25

    TensorFlow教程|常见问题

    此文档对关于TensorFlow的一些常见问题提供了答案,如果这里没有你问题的答案,你可能会在 社区资源 中找到它。内容常见问题建立 TensorFlow graph运行 TensorFlow
    发表于 07-27 18:33

    在Ubuntu 18.04 for Arm上运行TensorFlow和PyTorch的Docker映像

    MKLDNN_VERBOSE=1 以验证构建在运行基准测试时使用 oneDNN。概括AArch64 上的TensorFlow和PyTorch的Docker 映像现在可以在 Docker Hub 上获取快速
    发表于 10-14 14:25

    提出一个快速启动自己的 TensorFlow 项目模板

    简洁而精密的结构对于深度学习项目来说是必不可少的,在经过多次练习和 TensorFlow 项目开发之后,本文作者提出了一个结合简便性、优化文件结构和良好 OOP 设计的 TensorFlow 项目模板。该模板可以帮助你快速启动
    的头像 发表于 02-07 11:47 3126次阅读
    提出一个快速<b class='flag-5'>启动</b>自己的 <b class='flag-5'>TensorFlow</b> 项目模板

    tensorflow和python的关系_tensorflow与pytorch的区别

    Tensorflow和Python有什么关系?Tensorflow是Python的机器学习库,Python的库有很多,如Tensorflow、NumPy、Httpie、Django、Flask、Ansible。我们知道章鱼有很多
    的头像 发表于 12-04 14:54 2w次阅读