函数:tf.slice(inputs, begin, size, name)
作用:从列表、数组、张量等对象中抽取一部分数据
-
begin和size是两个多维列表,他们共同决定了要抽取的数据的开始和结束位置
begin表示从inputs的哪几个维度上的哪个元素开始抽取
size表示在inputs的各个维度上抽取的元素个数
import tensorflow as tf
import numpy as np
x=[[1,2,3],[4,5,6]]
with tf.Session() as sess:
begin = [0,1] # 从x[0,1],即元素2开始抽取
size = [2,1] # 从x[0,1]开始,对x的第一个维度(行)抽取2个元素,在对x的第二个维度(列)抽取1个元素
print sess.run(tf.slice(x,begin,size)) # 输出[[2 5]]
tf.strided_slice
tf.slice
这两用法其实是一样的,唯一的区别在于区间的开闭。
t = tf.constant([[[1, 1, 1], [2, 2, 2]],
[[3, 3, 3], [4, 4, 4]],
[[5, 5, 5], [6, 6, 6]]])
c=tf.strided_slice(t, [1, 0, 0], [2, 2, 2]) #[[[3 ,3],[4 ,4]]]
c=tf.slice(t, [1, 0, 0], [2, 2, 2])#[[[3, 3],[4 ,4]],[[5, 5][6 ,6]]]
二者的区别就是tf.slice在一维上闭区间 ,tf.strided_slice在一维上开区间