zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

【TensorFlow】——索引与切片

索引 Tensorflow 切片
2023-09-11 14:21:45 时间

目录

 

1、利用index进行索引

2、利用“:”和“...”进行索引与切片

3、tf.gather()——对一个维度进行乱序索引

优势:

缺点:

例子

4、tf.gather_nd()——同时对多个维度进行索引

5、tf.boolean_mask()——通过布尔值来进行索引


1、利用index进行索引

2、利用“:”和“...”进行索引与切片

对于每一维

start:end:step

默认的是区间是:【start_index,end_index)

默认的取值间隔为:step

3、tf.gather()——对一个维度进行乱序索引

tf.gather(a,axies=n,indices=[5,1,3,2,5])

1、a是数据源,即待索引切片的数据,设a.shape = tensorshape[4,35,8]
2、axies=n,表示的是需要进行索引的维度数,axies=0,表示对第一维进行索引,axies=1,表示对第二维进行索引,以此类推
3、indices=[,,,]:表示要提取数据的索引号

4、通过tf.gather()返回的依旧是一个tensor

优势:

前面的两种索引方法是需要遵循一定的顺序进行索引切片的,那要进行乱序索引应该怎么办呢?这就需要用到

tf.gather()

缺点:

tf.gather()——一次只能对一个维度进行索引

例子

 

4、tf.gather_nd()——同时对多个维度进行索引

如上图可知,要想对多个维度进行索引时,可以用gather依次选取,但是维度很多时就不行了

这时候就需要使用到tf.gather_nd()

 

 

5、tf.boolean_mask()——通过布尔值来进行索引

TRUE则表示取值

FALSE表示不取值

tf.boolean_mask(a,mask=[True/False,...,True/False],axies=n)

1、a表示的是数据源,待索引的数据集

2、mask=【】:这里是由True和false组成的列表,根据这个列表去指定的维度进行索引,TRUE取值,FALSE不取

3、axies=n:指定要进行索引的维度数,从外层到内层维度数依次从0递增

注意:mask列表中TRUE和FALSE的总数必须和指定维度的元素的个数保持一致,否则会报错