tf.slice()简介

mac2022-08-12  13

这个函数是对输入数据进行切片操作的,我们先看tf.slice()长啥样。 tf.sclice(input, begin, size, name=None)

input: 输入数据begin: 进行切片的起始位置size: 在从begin(起始位置)开始进行切片的大小。例如size=1,就是切一个,如果是2,就切两个。

举个例子,说明这玩意儿如何进行切片吧。 input为一个张量:T = [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]], [[5, 5, 5], [6, 6, 6]]] 再弄好看一点儿,它长这样: [ [ [1, 1, 1], [2, 2, 2] ], [ [3, 3, 3], [4, 4, 4] ], [ [5, 5, 5], [6, 6, 6] ] ]

首先,T 的 shape = ( 3, 2, 3), 它跟洋葱一样,一层一层的。这里只有3层。第一层有三大块,也就是类似[[1,1,1], [2, 2, 2]] 这样的块有3个。第二层就是在 [[1,1,1], [2, 2, 2]] 里分了,这里有 [1, 1, 1], [2, 2, 2] 两个层。再看第三层,就是类似于 [1, 1, 1] 这样的 里面看了, 里面有3个1。经过上面分析可以看到,它的形状(3,2,3)就是这样看出来的。再看begin,python里面的索引是从0开始的。比如begin = [1, 0, 0],第一个1,代表的是第一层里面的第二个块 [[3, 3, 3], [4, 4, 4]]。第二数0,代表的是第二层里面第一个块[3, 3, 3]。第三个数0,代表的是第三层[3, 3, 3]里面的第一个数 3。再看size: 就是从begin位置开始,想切割的个数。比如 ---------------- begin = [1, 0 ,0] -----------------size = [1, 1, 3]。 size的第一个数1:在 T 的第一层切割,指的是:begin的起始位置是1,对应的是 T 里面第一层中索引为1的块 [[3, 3, 3], [4, 4, 4]],然后size是1,取得1个,得到的是 [[3, 3, 3], [4, 4, 4]] 。 size的第二个数1:在第二层里面切割。这里的第二层是 [[3, 3, 3], [4, 4, 4]]。begin对应的索引位置 是0, 也就是 [[3, 3, 3], [4, 4, 4]]里面第一个小层[3, 3, 3]开始切割,然后size是1,取1个,得到的也就是[3, 3, 3]。如果size是2,得到的是[3, 3, 3]和 [4, 4, 4]了。 再看size的第三个数3:在第三层切。这里的是[3, 3, 3], begin对应的位置是0,也就是从 [3, 3, 3]里面的第一个数 3 开始切割,然后size对应的是3。就是取3个,得到的是3, 3, 3 这三个数。经过上面的复杂操作,得到的结果是[ [ [3, 3, 3] ] ]
最新回复(0)