【TensorFlow2.0】(3) 索引与切片操作

本文详细介绍了TensorFlow2.0中索引与切片的各种操作,包括给定维度索引、切片索引、省略号应用、tf.gather()和tf.gather_nd()方法以及布尔索引。通过实例展示了如何选取和操作多维张量的数据,帮助理解张量的高效操作。

各位同学好,今天我和大家分享一下TensorFlow2.0中索引与切片。内容有:

(1) 给定每一维度的索引来获取数据;(2) 切片索引;(3) 省略号应用;(4) tf.gather() 方法;(5) tf.gather_nd() 方法;(6) 布尔索引选数据

那我们开始吧。


1. 给定每一维度的索引获取数据

1.1 变量[ ][ ] 方法

首先定义一个全为1的四维tensor,如:tf.ones([2,3,3,2])。由于整个数据庞大,不利于观察,我们使用.shape来观察取出数据的情况。

#创建一个全为1的四维tensor,默认float32
a = tf.ones([2,3,3,2])
# 返回3,3,2的tensor  
a[0].shape  
#取出3行2列的矩阵tensor
a[0][0].shape  
#返回长度为2列表tensor
a[0][0][0].shape 
#值为标量1,是0维tensor.
a[0][0][0][1].shape  

我们可以把这个四维tensor,[2,3,3,2],理解为,有2个班级,每个班级有3名同学,每名同学有3门科目,每门科目有2份作业。

a[0] 可以理解为,第0个班级的所有数据,它包含3名同学,每名有3门科目,每科目有2份作业。因此,a[0] 是一个三维tensor形状为[3,3,2]

a[0][0] 可以理解为,第0个班级的第0个同学的所有数据,它包含3门科目,每科目有2份作业。因此,a[0][0] 是一个二维tensor形状为[3,2]

同理其他两个


1.2 变量[ , ] 方法

我们创建一个四维随即正态分布的tensor,形状shape为[4,5,6,7],我们同样可以用上一个理解方法来看这个四维tensor。4个班级,每班5个人,每人6门课,每门课7份作业。

#创建一个四维随机正态分布tensor
a = tf.random.normal([4,5,6,7])  
# 
a[1].shape  # 返回[5,6,7]
# 
a[1,2].shape  # 返回[6,7]
#
a[1,2,3].shape  # 返回[7]
# 
a[1,2,3,4]  # 返回值

a[1,2] 代表第1个班级中,第2名学生的所有信息,包含6门功课,每门课7份作业。因此,a[1,2].shape是一个二维tensor,形状为[6,7]该方法a[1,2]等同于上述的a[1][2]。可以少写括号且更直观。

a[1,2,3,4] 代表第1个班级中的第2名学生的第3门功课的第4份作业的信息,返回一个值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立Sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值