tf.strided_slice使用简介

作者: jayzhou215 | 来源:发表于2017-06-28 16:32 被阅读2994次

Update

tf.stride_slice(data, begin, end)
tf.slice(data, begin, end)
和tf.slice的区别是slice的end索引是闭区间,stride_slice的end索引是开区间,所以一个截掉最后一列(remove the last element or column of each line)的小技巧是用stride_slice(data, [0, 0], [rows, -1]),但是如果是用slice(data, [0, 0], [rows, -1])则仍是原矩阵。


官方介绍一眼看不明白,搜索之后看到这篇文章tf.strided_slice 实例,但是缺乏对于stride的介绍,自己动手再写个notebook

import tensorflow as tf
data = [[[1, 1, 1], [2, 2, 2]],
            [[3, 3, 3], [4, 4, 4]],
            [[5, 5, 5], [6, 6, 6]]]
x = tf.strided_slice(data,[0,0,0],[1,1,1])
with tf.Session() as sess:
    print(sess.run(x))

[[[1]]]

x = tf.strided_slice(data,[0,0,0],[2,2,2])
with tf.Session() as sess:
    print(sess.run(x))

[[[1 1]
[2 2]]

[[3 3]
[4 4]]]

从这里可以判断对于tf.strided_slice(data, begin, end, stride)
begin和end指定了位于[begin, end)的一小块切片。注意end中的索引是开区间。

x = tf.strided_slice(data,[0,0,0],[2,2,2],[1,1,1])
with tf.Session() as sess:
    print(sess.run(x))

[[[1 1]
[2 2]]

[[3 3]
[4 4]]]

当指定stride为[1,1,1]输出和没有指定无区别,可以判断默认的步伐就是每个维度为1

x = tf.strided_slice(data,[0,0,0],[2,2,2],[1,2,1])
with tf.Session() as sess:
    print(sess.run(x))

[[[1 1]]

[[3 3]]]

指定第二个维度步伐为2,看到第二个维度先选取了位置为0的数据[1,1,1],[3,3,3],然后没有继续选取[2,2,2],[4,4,4]

x = tf.strided_slice(data,[0,0,0],[2,2,3],[-1,1,2])
with tf.Session() as sess:
    print(sess.run(x))

[]

当begin为正值,stride任意位置为负值,输出都是空的

x = tf.strided_slice(input, [1, -1, 0], [2, -3, 3], [1, -1, 1])
with tf.Session() as sess:
    print(sess.run(x))

[[[4 4 4]
[3 3 3]]]

当begin和end对应维度为负值,stride可以为负值,表示反向的步伐。首先选取第一个维度索引为1的数据[3,3,3],[4,4,4]。再在第二个维度选取索引为-1的数据[4,4,4],再根据步伐-1选取索引为-2的数据[3,3,3]。再在第三个维度选取索引为0的数据[4],[3],再选取索引为1的数据[4],[3],再选取索引为2的数据[4],[3],最后得到上面的结果。

相关文章

  • tf.strided_slice使用简介

    Update tf.stride_slice(data, begin, end)tf.slice(data, be...

  • tf.strided_slice()官方示例解释

    Welcome To My Blog tf.strided_slice( input_, begin, end ...

  • Kafka简介+Kafka Tool使用简介+使用实例

    一、kafka主要特点如下 同时为发布和订阅提供高吞吐量。 Kafka 的设计目标是以时间复杂度为 0(1 )的方...

  • 七 iOS逆向 - Cycript

    Cycript简介 Cycript基本使用 封装Cycript脚本 Cycript使用示例 一 Cycript简介...

  • Markdown使用简介

    Markdown 的理念是,能让文档更容易读、写和随意改。HTML 是一种发布的格式,Markdown是一种书写的...

  • pyecharts使用简介

    pyecharts使我们能够使用python构建自己的统计图等形式的图表,使数据进行图形化地展示。

  • Jmeter使用简介

    一、Jmeter使用简介: 切换简体中文:Options>Choose Language>Chinese (Sim...

  • CreateML使用简介

    苹果在去年推出了CoreML机器学习模型,今年在XCode10中提供的CreateML framework,可以创...

  • SwitchHosts使用简介

    SwitchHosts使用简介 SwitchHosts是一个用于快速切换 hosts 文件的小程序,基于 Elec...

  • XFWalletSDK使用简介

    基于Kotlin实现,调用XF钱包的SDK(目前XF钱包还在测试阶段,很快将会推出,您的点赞就是我加快更新的动力)...

网友评论

    本文标题:tf.strided_slice使用简介

    本文链接:https://www.haomeiwen.com/subject/mhbzqxtx.html