田海立@CSDN 2020-11-14

本文用图文的方式来解释TensorFlow中strided_slice算子运算的方式。

一、strided_slice原型

strided_slice在各个维度上对数据做切片,做切片过程中可以指定stride。

原型如下:

tf.strided_slice(input_, begin, end, strides=None, begin_mask=0, end_mask=0, ellipsis_mask=0,new_axis_mask=0, shrink_axis_mask=0, var=None, name=None
)

其中:begin/end/strides指定各个维度上的起始/结束与步长的vector,长度是rank。注意:end是开区间,也即是达不到的。

也就是在axis#0上切片[begin[0], end[0]),stride: strides[0];在axis#1上切片[begin[1], end[1]),stride: strides[1],...

二、strided_slice对数据的处理

以一个3D Tensor [4, 6, 3]做begin[0, 1, 0], end[4, 6, 3], stride[2, 2, 1]为例,看strided_slice操作对数据的处理就是:

  1. axis#0维上,切片[0, 4),stride 2,也就是切片#0,#2;
  2. axis#1维上,切片[1, 6),stride 2,也就是切片#1,#3,#5;
  3. axis#2维上,切片[0, 3),stride 1,也就是切片#0,#1,#2;也就是该维上不变。

上述的处理过程,一张图展示就是这样:

三、strided_slice程序实现

上述过程用程序实现,如下:

定义一个[4, 6, 3]的Tensor:

>>>
>>> t = tf.range(4*6*3)
>>> t = tf.reshape(t, [4, 6, 3])
>>> t
<tf.Tensor: shape=(4, 6, 3), dtype=int32, numpy=
array([[[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11],[12, 13, 14],[15, 16, 17]],[[18, 19, 20],[21, 22, 23],[24, 25, 26],[27, 28, 29],[30, 31, 32],[33, 34, 35]],[[36, 37, 38],[39, 40, 41],[42, 43, 44],[45, 46, 47],[48, 49, 50],[51, 52, 53]],[[54, 55, 56],[57, 58, 59],[60, 61, 62],[63, 64, 65],[66, 67, 68],[69, 70, 71]]], dtype=int32)>
>>> 

执行strided_slice(begin = [0, 1, 0], end = [4, 6, 3], strides = [2, 2, 1])之后:

>>>
>>> t = tf.strided_slice(t, begin = [0, 1, 0], end = [4, 6, 3], strides = [2, 2, 1])
>>> t
<tf.Tensor: shape=(2, 3, 3), dtype=int32, numpy=
array([[[ 3,  4,  5],[ 9, 10, 11],[15, 16, 17]],[[39, 40, 41],[45, 46, 47],[51, 52, 53]]], dtype=int32)>
>>> 

总结

本文以图示和程序分析了tf.strided_slices对Tensor的处理,在各个维度上做切片。

图解TensorFlow op:tf.strided_slice相关推荐

  1. tensorflow op tf.global_variables_initializer

    一.安装 目前用了tensorflow.deeplearning4j两个深度学习框架, tensorflow 之前一直支持到python 3.5,目前以更新到3.6,故安装最新版体验使用. 慢慢长征路 ...

  2. pytorch实现连续切片,类似于tf.strided_slice()

    1.背景: 一直使用torch进行开发,torch的友好为开发调试提供了很多方便,但是torch中有些函数没有内置,造成使用的时候必须自己实现,最近就遇到了一个连续切片的问题,问题可以想象我们往Ber ...

  3. Dive into TensorFlow - 解析 TF 核心抽象 op 算子

    TF 计算图从逻辑层来讲,由 op 与 tensor 构成.op 是项点代表计算单元,tensor 是边代表 op 之间流动的数据内容,两者配合以数据流图的形式来表达计算图.那么 op 对应的物理层实 ...

  4. [图解tensorflow源码] [原创] Tensorflow 图解分析 (Session, Graph, Kernels, Devices)

    TF Prepare [图解tensorflow源码] 入门准备工作 [图解tensorflow源码] TF系统概述篇 Session篇 [图解tensorflow源码] Session::Run() ...

  5. [图解tensorflow源码] 入门准备工作附常用的矩阵计算工具[转]

    [图解tensorflow源码] 入门准备工作 附常用的矩阵计算工具[转] Link: https://www.cnblogs.com/yao62995/p/5773142.html tensorfl ...

  6. 【TensorFlow】tf.nn.conv2d是怎样实现卷积的?

    int height_col= (height + 2 * pad_h - kernel_h) / stride_h + 1; int width_col = (width + 2 * pad_w - ...

  7. tf.strided_slice函数

    在看cifar10的例子的时候,必然会看到一个函数,官方给的文档注释长而晦涩,基本等于0.网上也有这个函数,但解释差劲或者基本没有解释,函数的原型是酱紫的. def strided_slice(inp ...

  8. 【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?膨胀卷积

    介绍 关于空洞卷积的理论可以查看以下链接,这里我们不详细讲理论: 1.Long J, Shelhamer E, Darrell T, et al. Fully convolutional networ ...

  9. Tensorflow中tf.ConfigProto()详解

    参考Tensorflow Machine Leanrning Cookbook tf.ConfigProto()主要的作用是配置tf.Session的运算方式,比如gpu运算或者cpu运算 具体代码如 ...

最新文章

  1. 读书笔记——javascript闭包
  2. 02HTML标签(上)
  3. AI科学家王怀清:机器视觉识别领域 或将出现AI独角兽
  4. 【读书笔记】《写给大忙人看的Java SE 8》——Java8新特性总结
  5. 深入学习Tomcat----自己动手写服务器(附服务器源码)
  6. git 可视化工具_WEB开发者必备工具集
  7. SAP Fiori Elements 应用里和 Fiori 3 相关的外观设置
  8. 混沌工程详细介绍——Netflix持续交付实践探寻
  9. python 线性规划问题_一学高数,线代就头疼?让python帮你解决(内含教程)
  10. Linux一个驱动管理多个设备,poll方法(select多路监控原理与实现)
  11. android 文件加密源码
  12. 大家推荐的入门心理学书籍
  13. word忘记密码怎么解除
  14. 【贪心】(雾)小Y的炮
  15. JFS及JFS2文件系统
  16. 信用卡当天还款当天刷有风险吗?-民兴
  17. Bootstrap2和3的区别与选择指南
  18. Qt之自定义带游标的QSlider
  19. 【VsCode】如何使用VsCode中的代码片段快速输入常用代码(太实用了,有图,有示例)
  20. 项目文档编制-招标书

热门文章

  1. 概率论——泊松随机变量
  2. class4-操作列表
  3. bbsxp2007 SQL漏洞
  4. java锁-synchronized
  5. 英语速成的窍门—你需要掌握这些【胶水词】
  6. 2d有限元计算机仿真,永磁同步电机2D电磁场分析.doc
  7. 技术部如何做复盘——“年终盘点一对一”之前端架构师
  8. 大数据——个性化推荐系统
  9. 低成本兼职创业,每个互联网人都需要知道的方法论
  10. 【面向对象】多项式求导——第一单元课程总结