tensorflow切片

Posted 月疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tensorflow切片相关的知识,希望对你有一定的参考价值。

 

 

 

#gather相当于收集
#data[classes,studets,objects] #班级、学生、课程
a=[4,35,8]
tf.gather(a,axis=0,indices=[2,3]).shape#axis取那个维度0表示classes班级,indices获取班级具体索引[2,3]
#[2,35,8] #表示从a获取第一列的2-3俩个班级,35人,没人8门课

#对第axis个维度,进行采样,可以乱序
tf.gather(a,axis=0,indices=[2,1,3,0]).shape
tf.gather(a,axis=1,indices=[2,3,7,9,16]).shape
tf.gather(a,axis=2,indices=[2,3,7]).shape

#aa = tf.gather(a,axis,[several students]]
#aaa = tf.gather(aa,axis,[several subjects]]

tf.gather_nd(a,[0]).shape #第0号班级的学生和课程
tf.gather_nd(a,[0,1]).shape# 0号班级的第一号学生的课程
tf.gather_nd(a,[0,1,2]).shape #0号班级,第一个学生的第2门课程,就是[]
tf.gather_nd(a,[[0,1,2]]).shape#[1]

 

 

 

 

 

 

 

 

 

 

#逆序切片(-x~-1)
#正序切片(0~x)
a = tf.range(10)
print(a[-1:]) #这是9
print(a[-2:])#8和9
print(a[:2])#0和1
print(a[:-1])#[0,1,2,3,4,5,6,7,8]
#冒号:表示维度都取
a.shape#([4,28,28,3])
a[0]#([28,28,3])
a[0,:,:,:].shape#([28,28,3])

a[:,:,:,0].shape#[4,28,28,1]去R通道
a[:,:,:,2].shape#[4,28,28,1]取B通道

#start:end:step或者::step(开始:结束:步长)
a[:,0,:,:].shape#[4,28,3]
a[:,:14,:14,3].shape#[4,14,14,3]
a[:,14:,14:,:].shape#[4,14,14,3]
a[:,::2,::2,:].shape#[4,14,14,3]

a[:,0:28:2,0:28:2,:].shape#[4,14,14,3]

#::实现一个倒序的功能
a = tf.range(4)#[0,1,2,3]
a[::-1]#[3,2,1,0]倒序
a[::-2]#[3,1]
a[2::-2]#[2,0]

#介绍...三点号的用法
a = tf.random.normal([2,4,28,28,3])

a[0,:,:,:,:]#[4,28,28,3]
a[0,...].shape#[4,28,28,3]

a[:,:,:,:,0].shape#[2,4,28,28]
a[...,0].shape#[2,4,28,28]

a[0,...,2].shape#[4,28,28]
a[1,0,...,0].shape#[28,28]

以上是关于tensorflow切片的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TensorFlow 中对批次进行切片并在每个切片上应用操作

Tensorflow - 图像的动态切片

如何在 Tensorflow 中进行切片分配

切片 Tensorflow FixedLengthRecordReader 值

如何有效地分配给 TensorFlow 中的张量切片

TensorFlow 中类似 NumPy 的切片