tf.strided_slice的用法和理解

Posted aofengdaxia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tf.strided_slice的用法和理解相关的知识,希望对你有一定的参考价值。

函数的参数如下

def 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):

具体的理解如下

  1. input为输入的源数组(数据)
  2. begin是指的开始的数组下标
  3. end 是指结束的数组下标
  4. strides 是指步长

代码实操

input =[
	[[1,1,1],[2,2,2]],
	[[3,3,3],[4,4,4]],
	[[5,5,5],[6,6,6]]
]
r1 = tf.strided_slice(input,[0],[1],[1])
r2 = tf.strided_slice(input,[0],[2],[1])
r3 = tf.strided_slice(input,[0],[2],[2])
with tf.Session() as sess:
	print(sess.run(r1) ## 结果为[[[1,1,1] [2,2,2]]]
	print(sess.run(r2) ##结果为[[[1,1,1] [2,2,2]][[3,3,3],[4,4,4]]
	print(sess.run(r3)) ##结果为[[[1,1,1],[2,2,2]]]

当begin和end只有1位的时候,表示截取最外面的一层

r4 = tf.strided_slice(input,[0,0],[1,1],[1,1])
## 这个表示的就是从最外层截取0到1 就是 [[1,1,1],[2,2,2]] 然后在从里面截取0到1,所以结果是[1,1,1]
r5 = tf.strided_slice(input,[0,0,0],[1,1,1],[1,1,1])
## 这个如下:[[[1,1,1],[2,2,2]]] ⇒ [[[1,1,1]]]==>[[[1]]]

当strides大于 end的时候,默认只去begin。当begin>end的时候,取空值

以上是关于tf.strided_slice的用法和理解的主要内容,如果未能解决你的问题,请参考以下文章

tf.strided_slice()

tf.strided_slice_and_tf.fill_and_tf.concat

理解问题:预编译的标头和包含用法

Dva.js中Subscription的理解和用法

python的re库的一些用法和理解

我的runtime理解和用法