tf.slice的另一种理解方式,让你轻松记住

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]]]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值