Tensorflow版本:V2.8.0
Tensorflow中所有的运算 *** 作都是基于张量进行的。Tensorflow中的张量Tensor是具有统一类型的多维数组。这篇博文主要介绍张量的创建及基础 *** 作。
1. 张量的创建 1.1 tf.constant()方法 tf.constant()是一种常用的张量创建方法。具体代码如下:
这里有一点要注意,不同数值精度的张量不能直接进行计算,强制转化(tf.cast)之后才可以进行计算。具体如下:
Tensorflow中有一些特殊的张量,比如全0或全1张量、自定义数值张量、符合特定分布的张量以及序列型张量。
- 创建全0、全1或自定义数值的张量。这种方法创建的张量中的元素值都是一样的。
- 创建符合特定分布的张量。
前述使用tf.constant()方法创建的张量其实是常量张量,是不可变的张量。但在神经网络模型的训练中,尤其是
W
W
W和
b
b
b,需求不断地调整,这个时候再使用不可变张量就不合适了,所以Tensorflow中又提出了另一类型的张量:tf.Variable。其具体定义如下:
Tensorflow中有几个以initializer结尾的方法,这几个方法的使用有一些特殊,因为这些方法得到的并不是张量,而是一个可调用对象。下面以tf.random_uniform_initializer()为例进行说明。具体如下:
除了数值型的张量外,还可以创建布尔类型和字符串类型的张量。tf.strings模块提供了常见的字符串类型的工具函数,具体如下:
Tensorflow中张量的基础 *** 作很多都与Python中的Numpy类似,比如切片索引等。所以这里只会关注与Numpy中不同的部分。
2.1 维度变换Tensorflow中基本的维度变换 *** 作主要有以下几种:改变视图reshape(这里不介绍了)、插入新维度expand_dims、删除维度squeeze、交换维度transpose、复制数据tile等。具体 *** 作如下:
- 维度变换
这里要注意,tf.expand_dims()和tf.squeeze()方法可以导致张量维度shape(又叫视图)的改变,但不会导致数据的改变(张量的总数据元素个数及数据在内存中的存储顺序都不会改变),改变的仅仅是数据的理解方式。但是tf.tanspose()方法会改变张量中数据元素的存储顺序。 - 复制数据
Tensorflow中也有类似numpy的广播机制,所以复制数据步骤一般不需要人工 *** 作。但是广播机制并不会对数据真正对数据进行复制,节省了计算资源。
- https://tensorflow.google.cn/guide/tensor
- Tensorflow深度学习
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)