tf.slice(input,begin,size)
举例:
1、tf.slice([[1,2,3],[4,5,6],[7,8,9]],[0,0],[2,1])
快速解答:[[1,2,3],[4,5,6],[7,8,9]]在第一维度切片结果为[[1,2,3],[4,5,6],[7,8,9]][0:0+2] 结果为:[[1,2,3],[4,5,6]]
接着再第二维度切片[[1,2,3][0:0+2],[4,5,6][0:0+1]] 结果为:[[1],[4]]
input的shapes是(3,3),则begin和size的长度必定为2(2维数组)
具体切片过程可以理解为:
第一步:[[1,2,3],[4,5,6],[7,8,9]][0:0+2] (0+2指的就是begin+size) (这就是列表的切片)结果为:[[123],[4,5,6]]
第二步:[1,2,3][0:0+1] 和 [4,5,6][0:0+1] 结果为:1和4
第三步:最后的结果一定还原成2为数组,所以结果为[[1],[4]]
2、tf.slice([[[1,2,3],[4,5,6]],[[7,8,9],[10,1,1]]],[0,0,1],[-1,-1,2])(-1代表从begin位置开始全部取出)
快速解答:第一维度切片[[[1,2,3],[4,5,6]],[[7,8,9],[10,1,1]]][0:] 结果为[[[1,2,3],[4,5,6]],[[7,8,9],[10,1,1]]]
第二维度切片[[[1,2,3],[4,5,6]][0:],[[7,8,9],[10,1,1]][0:]] 结果为[[[1,2,3],[4,5,6]],[[7,8,9],[10,1,1]]]
第三维度切片[[[1,2,3][1:1+2],[4,5,6][1:1+2]],[[7,8,9][1:1+2],[10,1,1][1:1+2]]] 其结果为[[[2,3],[5,6]],[[8,9],[1,1]]]
具体过程可理解为:
第一步:[[[1,2,3],[4,5,6]],[[7,8,9],[10,1,1]]][0:] 输出结果[[[1,2,3],[4,5,6]],[[7,8,9],[10,1,1]]]
第二步:同样第一步结果含有两个元素,所以 [[1,2,3],[4,5,6]][0:]和[[7,8,9],[10,1,1]][0:] 结果为:[[1,2,3],[4,5,6]]和[[7,8,9],[10,1,1]]
第三步:第二步元素个数为2+2为4,所以[1,2,3][1:3]、[4,5,6][1:3]、[7,8,9][1:3]和[10,1,1][1:3] 结果分别为[2,3]、[5,6]、[8,9]和[1,1]
第四步:还原成三维数组[[[2,3],[5,6],[8,9],[1,1]]]
第五步:[2,3]和[5,6]是由[[1,2,3],[4,5,6]]生成的,所以最后的结果为[[[2,3],[5,6]],[[8,9],[1,1]]]