函数:tf.slice(inputs, begin, size, name)
作用:从列表、数组、张量等对象中抽取一部分数据
begin和size是两个多维列表,他们共同决定了要抽取的数据的开始和结束位置
begin表示从inputs的哪几个维度上的哪个元素开始抽取 ,begin基于下标0开始
size表示在inputs的各个维度上抽取的元素个数
若begin[]或size[]中出现-1,表示抽取对应维度上的所有元素
作用:从列表、数组、张量等对象中抽取一部分数据
begin和size是两个多维列表,他们共同决定了要抽取的数据的开始和结束位置
begin表示从inputs的哪几个维度上的哪个元素开始抽取 ,begin基于下标0开始
size表示在inputs的各个维度上抽取的元素个数
若begin[]或size[]中出现-1,表示抽取对应维度上的所有元素
测试:如下是一个三维Tensor数据表
import tensorflow as tf
import numpy as np
#这个代码演示测试tf.slice函数
t=[[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]],[[5,5,5],[6,6,6]]]
s1=tf.slice(t,[1,0,0],[1,1,3])
#begin=[1,0,0],表明从第1维的[0,0]开始切片,也就是从[3,3,3]开始
#size=[1,1,3]表明切片后是1维,切片的尺寸为1行3列。
s2=tf.slice(t,[0,1,1],[2,1,1])
#begin=[0,1,1],表明从第0维的[1,1]开始切片,也就是从[2,2,2]的第二个2开始
#size=[2,1,1]表明切片后是2维,切片的尺寸为1行1列。
sess=tf.Session()
print(sess.run(s1))
#输出结果为[[[3 3 3]]],一行三列
print(sess.run(s2))
#输出结果:
[[[2]]
[[4]]]
#测试维度:
print(sess.run(s1).shape)
print(sess.run(s2).shape)
#结果如下
(1, 1, 3)
(2, 1, 1)
下面的立体图说明切片的实际方法:
(size的大小不能大于切片刀下方表格数据的尺寸,维度数不能大于被切片数据的维度)
以s2为例
Comments
Post a Comment