TensorFlow编程基础:从张量开始
本文讲述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)
说了变量,再说下占位符。
既然有了变量,为什么还有占位符出来呢?
这是因为有些时候,需要类似变量的一个东西,但又因为不知道它的数值没法给它赋值,所以占一个位置先。
在真正开始运行程序时,由外部来输入,比如模型训练时需要喂入的大量数据。
这样一解释,它就很像函数里的参数了。
- 点赞
- 收藏
- 关注作者
评论(0)