从零开始学TensorFlow【什么是TensorFlow?】下

简介: 笔记

三、Flow?介绍图和节点


我们将Flow翻译成中文:,所以现在是Tensor流

其实,在TensorFlow中,使用图 (graph) 来表示计算任务。其实TensorFlow默认会给我们一张空白的,一般我们会叫这个为”数据流图“。数据流图由有向边和节点组成,在使用TensorFlow的时候我们会在图中创建各种的节点,而Tensor会在这些节点中流通。所以,就叫做TensorFlow

那有人就会好奇,我们执行什么操作会创建节点呢?在TensorFlow中,节点的类型可以分为三种:

  • 存储节点:有状态的变量操作,通常用于存储模型参数
  • 计算节点:无状态的计算和控制操作,主要负责算法的逻辑或流程的控制
  • 数据节点:数据的占位符操作,用于描述图外输入的数据

看到这里的同学,可能就反应过来了:原来在上面创建的变量、常量和占位符在TensorFlow中都会生成一个节点!对于这类的操作Operation(行为)一般大家会简说成op

所以,op就是在TensorFlow中所执行的一个操作统称而已(有可能是创建变量的操作、也有可能是计算的操作)。在TensorFlow的常见的op有以下:

42.jpg                                                Tensorflow常见的op

其实说白了就是TensorFlow会给我们一张空白的数据流图,我们往这张数据流图填充(创建节点),从而实现想要效果。

  • 开局一张图,内容全靠编!43.jpg
                                                         数据流图的组成

我们来看看官方的给出数据流图的gif,加深下印象。

  • TensorFlow使用数据流图来表示计算任务
  • TensorFlow使用Tensor来表示数据,Tensor在数据流图中流动。
  • 在TensorFlow中”创建节点、运算“等行为统称为op

44.gif

                    数据流图


四、啥是session?


TensorFlow程序通常被组织成一个构建阶段和执行阶段. 在构建阶段, op的执行步骤被描述成一个图. 在执行阶段, 使用会话执行执行图中的op。

  • 注意:因为是有向边,所以只有等到之前的入度节点们的计算状态完成后,当前节点才能执行操作

说白了,就是当我们在编写代码的时候,实际上就是在将TensorFlow给我们的空白图描述成一张我们想要的图。但我们想要运行出图的结果,那就必须通过session来执行。

举个小例子:

import tensorflow as tf
# 创建数据流图:y = W * x + b,其中W和b为存储节点,x为数据节点。
x = tf.placeholder(tf.float32)
W = tf.Variable(1.0)
b = tf.Variable(1.0)
y = W * x + b
# =========如果不使用session来运行,那上面的代码只是一张图。我们通过session运行这张图,得到想要的结果
with tf.Session() as sess:
    tf.global_variables_initializer().run() # Operation.run
    fetch = y.eval(feed_dict={x: 3.0})      # Tensor.eval
    print(fetch)   # fetch = 1.0 * 3.0 + 1.0


4.1 Fetch是啥?


Fetch就时候可以在session.run的时候传入多个op(tensor),然后返回多个tensor(如果只传入一个tensor的话,那就是返回一个tensor)


4.2tensor.eval()和Operation.run()


有的同学在查阅资料的时候,发现可能调用的不是session.run,而是tensor.eval()和Operation.run()。其实,他们最后的调用的还是session.run。不同的是session.run可以一次返回多个tensor(通过Fetch)。

45.jpg                                              最后实际还是掉session.run


最后


曾经看到一段话总结得不错:

  • 使用 tensor 表示数据.
  • 使用图 (graph) 来表示计算任务.
  • 在会话(session)中运行图
  • 通过 变量 (Variable) 维护状态.

TensorFlow 是一个编程系统, 使用图来表示计算任务. 图中的节点被称之为 op (operation 的缩写). 一个 op 获得 0 个或多个 Tensor, 执行计算, 产生 0 个或多个 Tensor. 每个 Tensor 是一个类型化的多维数组.

这篇文章简单讲了TensorFlow是啥意思以及一些基础的概念。但我也只是简单以我的理解方式来说了一些常见概念。里头的知识点还是比较多的(比如创建变量的时候一般我们会指定哪些参数….),这些就交由大家去官网、博客、书籍去学习了。

我相信,只要了解了这些概念,那学习一定可以事半功倍!

目录
相关文章
|
Java 程序员 Apache
免费申请和使用IntelliJ IDEA商业版License指南
IntelliJ IDEA是广受Java开发者喜爱的工具,其商业版的价格十分昂贵,现在有机会免费获取IntelliJ IDEA的正版License,您是否心动呢?咱们一起行动吧
1113 0
免费申请和使用IntelliJ IDEA商业版License指南
|
并行计算 安全 量子技术
量子计算安全性:保护信息的新途径
量子计算以其强大的计算能力和独特的量子特性,为数据加密和信息安全提供了全新解决方案。本文探讨了量子计算的基本原理、安全优势及保护信息安全的新途径,如量子密钥分发、量子安全协议等,展望了量子计算在信息安全领域的应用前景。
|
前端开发 UED 开发者
React 日期选择器 Date Picker
本文从React的角度探讨了日期选择器的使用方法,包括使用`react-datepicker`库的基本配置、自定义样式、国际化设置、常见问题及解决方案,旨在帮助开发者构建用户友好的日期选择组件。
484 12
|
机器学习/深度学习 自然语言处理 搜索推荐
智能语音交互:技术原理与应用前景####
【10月更文挑战第25天】 一句话概括本文主旨,并引发读者兴趣。 智能语音交互技术,作为人工智能领域的重要分支,正以前所未有的速度融入我们的生活,从简单的语音助手到复杂的多轮对话系统,它不仅重塑了人机交互的方式,还为多个行业带来了革命性的变化。本文将深入浅出地探讨智能语音交互的技术原理、当前主流技术路线、面临的挑战及未来发展趋势,为读者揭开这一高科技领域的神秘面纱。 ####
|
Kubernetes Cloud Native API
掌握Dapr:构建可移植的微服务应用
【10月更文挑战第8天】Dapr(Distributed Application Runtime)是一个开放、可移植的运行时环境,旨在简化微服务应用的构建。它通过提供一套API处理服务发现、状态管理、发布/订阅等常见问题,帮助开发者专注于业务逻辑。本文介绍Dapr的基本概念、核心组件、优势及实施步骤,适用于希望构建弹性、可扩展微服务应用的开发者。
|
网络协议
详解VXLAN网络中报文是如何转发的?值得收藏学习!
详解VXLAN网络中报文是如何转发的?值得收藏学习!
716 0
详解VXLAN网络中报文是如何转发的?值得收藏学习!
|
边缘计算 缓存 自动驾驶
5G如何实现更高的数据速率?涉及哪些技术?
5G如何实现更高的数据速率?涉及哪些技术?
652 0
|
监控 安全 Linux
在Linux中,什么是 root 帐户?
在Linux中,什么是 root 帐户?
|
安全 数据安全/隐私保护
数字证书的主要作用是什么?
【5月更文挑战第11天】数字证书的主要作用是什么?
1513 2