TensorFlow深度学习(三)——张量基础

本文是书籍《TensorFlow深度学习》的学习笔记之一

数据类型

TF中的数据类型分为标量Scalar、向量Vector、矩阵Matrix、张量Tensor,0维的张量就是标量,1维的张量就是向量,2维的张量就是矩阵,大于等于3维的张量没有名称,统一叫做张量。

a = tf.constant(1.2)  # 创建标量
b = tf.constant([1, 2., 3.3])  # 创建向量
c = tf.constant([[1, 2], [3, 4]])  # 创建矩阵
x = tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])  # 创建张量,3维,2*2*2
str_ = tf.constant('hello,deep learning')  # 字符串
bool_ = tf.constant(True)

数值精度

tf.constant(12345678, dtype=tf.int16)
a = tf.constant([-1, 0, 1, 2])
tf.cast(a, tf.bool)

待优化张量

TF专门增加了一种专门的数据类型来支持梯度信息的记录,tf.Variable。如神经网络的输入X,设置为普通张量即可;如果是网络层的参数W和b,需要tf.Variable包装来跟踪梯度等相关信息。如
a = tf.Variable([[1,2],[3,4]])

创建张量

  • 从列表对象中创建:tf.convert_to_tensor([1,2.])
  • 从数组对象中创建:tf.convert_to_tensor(np.array([[1,2.],[3,4]]))
  • 创建全0/1的向量、矩阵:
tf.zeros([1])
a = tf.ones([2,2])
tf.ones_like(a)
  • 创建自定义张量:tf.fill([2,2],99),创建2行2列,元素全为99的矩阵
  • 创建已知分布的张量:tf.random.normal([2,2]),创建标准正态分布的张量,tf.random.uniform([2,2],maxval=10),创建采样自[0,10]均匀分布的2*2矩阵
  • 创建序列:tf.range(10),创建0~10,步长为1的整型序列
    tf.range(1,10,delta=2),创建1~10,步长为2的整型序列:[1,3,5,7,9]

切片

通过start:end:step切片可以方便地提取一段数据,step为步长

x = tf.random.normal([4,32,32,3])
x[1:3]#读取第二三张图片
x[0,::]#读取第一张图片
x[1,9,21]#读第2张图片,第10行,第3列,第二个通道的数据

在这里插入图片描述
step=-1时,表示逆序读取,

x=tf.range(9)
x[8:0:-1]#从8读取到0,逆序,不包含0
x[::-1]#逆序全部元素

维度变换

通过维度变换可以将数据任意地切换形式,满足不同场合的运算需求。

改变视图

使用reshape,把向量改成了4维张量,可以理解为2张图片,每张图片4行4列,每个点有3个RGB通道,也可以理解为2张图片,图片的特征是443。

>>> x=tf.range(96)
>>> x=tf.reshape(x,[2,4,4,3])#改变x的视图,获得4D张量
>>> x
<tf.Tensor: shape=(2, 4, 4, 3), dtype=int32, numpy=
array([[[[ 0,  1,  2],
         [ 3,  4,  5],
         [ 6,  7,  8],
         [ 9, 10, 11]],

        [[12, 13, 14],
         [15, 16, 17],
         [18, 19, 20],
         [21, 22, 23]],

        [[24, 25, 26],
         [27, 28, 29],
         [30, 31, 32],
         [33, 34, 35]],

        [[36, 37, 38],
         [39, 40, 41],
         [42, 43, 44],
         [45, 46, 47]]],


       [[[48, 49, 50],
         [51, 52, 53],
         [54, 55, 56],
         [57, 58, 59]],

        [[60, 61, 62],
         [63, 64, 65],
         [66, 67, 68],
         [69, 70, 71]],

        [[72
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值