前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TensorFlow的核心概念:张量和计算图

TensorFlow的核心概念:张量和计算图

作者头像
lyhue1991
发布2020-07-20 11:49:16
1.1K0
发布2020-07-20 11:49:16
举报
文章被收录于专栏:Python与算法之美

请允许我引用官网上的这段话来介绍TensorFlow。

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

TensorFlow的主要优点:

  • 灵活性:支持底层数值计算,支持自定义操作符
  • 可移植性:从服务器到PC到手机,从CPU到GPU到TPU
  • 分布式计算:分布式并行计算,可指定操作符对应计算设备

HelloWorld简单范例

使用TensorFlow的基本步骤一般为:定义计算图,执行计算图,查看计算图(可选)。

代码语言:javascript
复制
import tensorflow as tf

#定义计算图
g = tf.Graph()
with g.as_default():
    hello = tf.constant('hello',name = 'hello')
    world = tf.constant('world',name = 'world')
    helloworld = tf.string_join([hello,world],name = 'join',separator=' ')

#执行计算图
with tf.Session(graph = g) as sess:
    print(sess.run(fetches = helloworld,feed_dict={}))

#查看计算图
with tf.summary.FileWriter('F:\OneDrive\my_graph') as writer:
    writer.add_graph(g)

#1,在命令行中切换到 F:/OneDrive 
#2,运行 tensorboard --logdir='my_graph'
#3, 打开浏览器输入地址http://localhost:6006

张量数据结构

TensorFlow的数据结构是张量Tensor。Tensor即多维数组。Tensor和numpy中的ndarray很类似。

1,Tensor的维度 rank

标量为0维张量,向量为1维张量,矩阵为2维张量。

彩色图像有rgb三个通道,可以表示为3维张量。

视频还有时间维,可以表示为4维张量。

2,Tensor的形状 shape

Tensor在各个维度的长度可以用一个向量表示,称为Tensor的形状shape。

shape的元素数量和Tensor的维度相等。

3,Tensor的数据类型 dtype

Tensor的数据类型dtype和numpy中的array的数据类型dtype几乎一一对应。

不过Tensor中的字符串数据类型只能为np.string即字节byte类型,不能为"Unicode"

计算图算法语言

计算图由节点(nodes)和线(edges)组成。

节点表示操作符Operator,线表示计算间的依赖。

实线表示有数据传递依赖,传递的数据即张量。

虚线通常可以表示控制依赖,即执行先后顺序。

为什么TensorFlow要采用计算图来表达算法呢?

主要原因是计算图的编程模型能够让TensorFlow实现分布式并行计算。

下面我们来看一个简单的计算图的示例:计算 y = a*x^2 + b*x + c

并说明计算图和分布式并行计算之间的关联。

这个计算用纯Python语言,可能只要2到3行就能够实现。但表达成计算图,我们却要10多行代码。为啥TensorFlow还要用计算图来表达算法呢?当然计算图会非常直观,但主要原因是为了分布式并行计算。在纯Python语言的实现中我们只能由一个机器同时完成上述计算。计算顺序可能是这样的。

  • step1:x_square = x^2
  • step2:a_x_square = a*x^2
  • step3: b_x = b*x
  • step4:b_x_plus_c = b_x +c
  • step5:y = a_x_square + b_x_plus_c

但实际上,step3,step4并不依赖于step1,step2。

按照如下顺序:step3-->step4-->step1-->step2-->step5来计算也是可以的。

实际上我们完全可以让step3,step4和step1,step2这两组计算同时由不同的机器进行。

表达成计算图后,计算之间的依赖和独立关系变得非常清晰。

TensorFlow可以将每个操作符Operator的任务分配给不同的机器,从而实现分布式并行计算。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法美食屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2,Tensor的形状 shape
  • 3,Tensor的数据类型 dtype
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档