tf.slice()简介

这个函数是对输入数据进行切片操作的,我们先看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]
]
]

  1. 首先,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)就是这样看出来的。
  2. 再看begin,python里面的索引是从0开始的。比如begin = [1, 0, 0],第一个1,代表的是第一层里面的第二个块 [[3, 3, 3], [4, 4, 4]]。第二数0,代表的是第二层里面第一个块[3, 3, 3]。第三个数0,代表的是第三层[3, 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值