tf.strided_slice的一些心得

最近在测试strided_slice算子,由于这个算子应用不多,算子计算逻辑较为复杂,mark下。
这个算子的主要功能是对tensor的shape进行切片,起始位置&终止位置&步长可以指定。应用场景类似于剥离三维图像中的核心部分。
算子的定义如下:
tf.strided_slice(
input_, # 输入的data
begin, # 切分的起始位置为一个一维向量,实测len(
end,
strides=None,
begin_mask=0,
end_mask=0,
ellipsis_mask=0,
new_axis_mask=0,
shrink_axis_mask=0,
var=None,
name=None
)
input_, 输入的data
begin, 切分的起始位置为一个一维向量,实测len(begin)可以大于
input_的维数
end/strides 长度需要与begin保持一致
算子的大致说明可以参考:https://blog.csdn.net/silentob/article/details/96007568
但是对于begin_mask, end_mask, ellipsis_mask, new_axis_mask, shrink_axis_mask这五个变量原csdn博客解释的部分内容与实际有偏差,因此增加一些解释。
begin_mask掩码:使用二进制flag对input tensor不同维度进行标志,输入为int类型,算子内部会转化为二进制,再倒序排布后进行计算。假设shape为[1,2,3,4,5]如输入begin_mask为1,二进制位0b00001,其扩展至5维分布为0b10000,忽略0b开头仅对shape[0]起作用。如输入begin_mask为4,二进制位0b00110,其扩展至5维分布为0b01100,忽略0b开头仅对shape[1]&shape[2]起作用。end_mask类似。
ellipsis_mask 掩码可以参考博文。
new_axis_mask掩码这个比较难,目前仍为理解透彻,但是增加的1维不一定是插在shape[0]位置。
shrink_axis_mask掩码则为降维使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值