TensorFlow编程基础:从张量开始

举报
黄生 发表于 2021/04/24 12:06:27 2021/04/24
【摘要】 本文讲述TensorFlow的编程基础,介绍张量及相关联的知识。tensorflow=tensor张量 + flow 流张量具体是啥意思之前不是很明白,只知道张力的概念,比如在亚平老师的太空授课中,水膜加水后能变成水球,就是因为水的表面张力。那这里的张量,是指一种数据结构,具体来说是多维数组(通过.numpy()来得到)。我的理解它的表现形式可以是,一个单独的数/标量,或一个一维数组/向量,...

本文讲述TensorFlow的编程基础,介绍张量及相关联的知识。

tensorflow=tensor张量 + flow 流

张量具体是啥意思之前不是很明白,只知道张力的概念,比如在亚平老师的太空授课中,水膜加水后能变成水球,就是因为水的表面张力。

那这里的张量,是指一种数据结构,具体来说是多维数组(通过.numpy()来得到)。我的理解它的表现形式可以是,一个单独的数/标量,或一个一维数组/向量,一个二维数组/矩阵,或三维四维多维等等。形式上来统一化,可以叫做:0阶张量/标量/Scalar, 1阶张量/向量/vector, n阶张量/n维数组

流,表示张量数据流动/计算的过程。

每一个张量有一个唯一的类型,运算的类型不匹配会报错,比如int和float32运算就不行,这个是比较严格的,可以先通过tf.cast()做类型转换

常量定义的时候是可以按需求做类型自动转换、reshape的

但是变量的定义中,类型还是根据初值来定的,而设定的需求类型并没有生效:v2=tf.Variable([3,4],tf.float32)

tf里的变量和普通编程语言里的变量是有区别的,区别在于tf里的变量设计为学习中自动优化自动调整它的值,一般无需人工进行赋值,所以它的trainable参数默认是启用的,当然如果是要冻结这些值的时候,就不启用它了

tf2对tf1.x是间接兼容的,原来1.x的API整理到tensorflow.compat.v1包里去了。这样写:

import tensorflow.compat.v1 as tf
tf.disable_eager_execution() //禁用tf2默认的即时执行模式

然后在建立会话来实现计算图执行

sess=tf.Session()
sess.run(node1)

说了变量,再说下占位符。

既然有了变量,为什么还有占位符出来呢?
这是因为有些时候,需要类似变量的一个东西,但又因为不知道它的数值没法给它赋值,所以占一个位置先。
在真正开始运行程序时,由外部来输入,比如模型训练时需要喂入的大量数据。
这样一解释,它就很像函数里的参数了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。