在TensorFlow中,tensor是一个类,也是存储和变换数据的主要工具。 如果你之前用过NumPy,你会发现tensor和NumPy的多维数组非常类似。 然而,tensor提供GPU计算和自动求梯度等更多功能,这些使tensor更加适合深度学习。
1 TensorFlow基本功能
首先用arange创建一个行向量
创建一个行向量.png
关于constan函数在TensorFlow中表示张量。
constan函数.png
张量:
多维数组可以被称之为张量,和numpy中的数组一样,张量也有类型和形状。在tensorflow 的python API中,可以用numpy中的ndarrays来表示。 通常用来保存浮点数据,也可以用来存储字符串(任意字节的数组)。
第一个值value是必须的,可以是一个数值,也可以是一个列表。
后面四个参数可写可不写,第二个参数表示数据类型,一般可以是tf.float32, tf.float64等:
第三个参数表示张量的“形状”,即维数以及每一维的大小。如果指定了第三个参数,当第一个参数value是数字时,张量的所有元素都会用该数字填充:
第四个参数name可以是任何内容,主要是字符串就行。
第五个参数verify_shape默认为False,如果修改为True的话表示检查value的形状与shape是否相符,如果不符会报错。
具体可以看这个TensorFlow创建常量(tf.constant)详解
#<tf.Tensor: id=0, shape=(12,), dtype=int32, numpy=array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])>
x
#TensorShape([12])
x.shape #shape属性来获取tensor实例的形状
#12
len(x) #我们也能够通过len得到tensor实例中元素(element)的总数。
reshape.png
上面x.reshape((3, 4))也可写成x.reshape((-1, 4))或x.reshape((3, -1))。由于x的元素个数是已知的,这里的-1是能够通过元素个数和其他维度的大小推断出来的。
我们创建一个各元素为0,形状为(2, 3, 4)的张量。实际上,之前创建的向量和矩阵都是特殊的张量。
创建各元素为1的张量
各元素为1的张量.png
我们也可以通过Python的列表(list)指定需要创建的tensor中每个元素的值。有些情况下,我们需要随机生成tensor中每个元素的值。下面我们创建一个形状为(3, 4)的tensor。它的每个元素都随机采样于均值为0、标准差为1的正态分布。
image.png
2 广播机制
两个形状相同的tensor做按元素运算。当对两个形状不同的tensor按元素运算时,可能会触发广播(broadcasting)机制:先适当复制元素使这两个tensor形状相同后再按元素运算。
广播机制.png
由于A和B分别是3行1列和1行2列的矩阵,如果要计算A + B,那么A中第一列的3个元素被广播(复制)到了第二列,而B中第一行的2个元素被广播(复制)到了第二行和第三行。
image.png
3 索引
在tensor中,索引(index)代表了元素的位置。tensor的索引从0开始逐一递增。
我们指定了tensor的行索引截取范围[1:3]。依据左闭右开指定范围的惯例,它截取了矩阵X中行索引为1和2的两行。
tf.assign()的作用类似于python操作符中的=理解为tensorflow中为操作符进行赋值操作。
索引.png
4 tensor 和 NumPy 相互变换
我们可以通过array函数和asnumpy函数令数据在NDArray和NumPy格式之间相互变换。下面将NumPy实例变换成tensor实例。
ensor 和 NumPy 相互变换.png
网友评论