函数:tf.slice(inputs, begin, size, name)

作用:从列表、数组、张量等对象中抽取一部分数据

begin和size是两个多维列表,他们共同决定了要抽取的数据的开始和结束位置

begin表示从inputs的哪几个维度上的哪个元素开始抽取 size表示在inputs的各个维度上抽取的元素个数

若begin[]或size[]中出现-1,表示抽取对应维度上的所有元素

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]]

用来进行切片操作,实现在python中的a[:,2:3,5:6]类似的操作,例子如:

t = tf.constant([[[1, 1, 1], [2, 2, 2]],
                 [[3, 3, 3], [4, 4, 4]],
                 [[5, 5, 5], [6, 6, 6]]])
# shape = (3,2,3)
tf.slice(t, [1, 0, 0], [1, 1, 3])  # [[[3, 3, 3]]], shape (1,1,3)
tf.slice(t, [1, 0, 0], [1, 2, 3])  # [[[3, 3, 3],
                                   #   [4, 4, 4]]] shape (1,2,3)
tf.slice(t, [1, 0, 0], [2, 1, 3])  # [[[3, 3, 3]],
                                   #  [[5, 5, 5]]] shape (2,1,3)