tensorflow学习——张量的相关操作

张量相关操作

多维张量在物理上以一维的方式连续存储,通过定义维度和形状,在逻辑上把它理解为多维张量。(对于多维数组也同样适用)

维度变换

改变张量形状

使用tf.reshape改变张量的形状,语法格式:

tf.reshape(tensor,shape)

例,将一维张量转换成三维张量:

a = tf.range(24)
print(a)
print(tf.reshape(a, [2, 3, 4]))

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Ba3SlPM-1591091963980)(./img/13.png)]

多维张量的轴

多维张量的维度表示多维张量的轴(axis)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQ0PeP5e-1591091963984)(./img/14.png)]

张量的轴带有索引值,从维度最高到最低,使用数字0作为轴索引的开始,(可以理解为张量最外层到最内层的顺序)。也可以使用负数作为倒数的索引,-1表示索引值最大的轴,这一点与Python的列表一致。

增加维度

使用tf.expand_dims(input, axis)增加张量维度,语法格式:

tf.expand_dims(input, axis)

示例,现有一个shape为(2,2)的张量,为它在axis=0方向上添加一个维度:

a = tf.constant([[1,2],[3,4]])
print(tf.shape(a))
a = tf.expand_dims(a, axis=0)
print(a)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7YeG5fWV-1591091963985)(./img/15.png)]

需要注意的是,tf.expand_dims()必须要明确指定axis的值,指定顶哪个轴就在原张量基础上增加一个指定轴。如果上述代码指定axis=1,那么a的shape就会是(2, 1, 2)。

删除维度

删除维度用tf.squeeze()函数,该函数语法格式:

tf.squeeze(input, axis=None)

该函数只能删除长度为1的维度,可以指定axis,如果明确不指定axis,会删除所有长度为1的维度,可以使用列表来指定多个要删除的维度。

例,原张量shape为(1, 2 , 3, 1, 1, 4),如果分别指定删除全部长度为1的维度和,代码为:

a = tf.constant(1, shape=(1, 2, 3
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值