tensorflow之tf.slice
tf.slice
import tensorflow as tf
t = tf.constant([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]], [[5, 5, 5], [6, 6, 6]]])
with tf.Session() as sess:
print(sess.run(tf.slice(t, [1, 0, 0], [1, 1, 3]))) # [[[3 3 3]]]
print(sess.run(tf.slice(t, [1, 0, 0], [-1, 1, -1]))) #[[[3 3 3]] [[5 5 5]]]
print(sess.run(tf.slice(t, [1, 0, 0], [-1, -1, -1]))) #[[[3 3 3] [4 4 4]] [[5 5 5] [6 6 6]]]
详解:
第一纬度 | 第二纬度题 | 第三纬度 |
---|---|---|
A | A=[i, j] | i=[1, 1, 1], j=[2, 2, 2] |
B | B=[k, l] | k=[3, 3, 3], l=[4, 4, 4] |
C | C=[m, n] | m=[5, 5, 5], n= [6, 6, 6] |
例1:
begin=[1, 0, 0]:第一纬度1是B,第二纬度0是k,第三纬度0是3
size=[1, 1, 3]:第一纬度1指从B算起取一个,第二纬度1指从k算起取一个,第三纬度3指从第一个3算起取三个。
所以为 [[[3 3 3]]]
例2:
begin=[1, 0, 0]:第一纬度1是B,第二纬度0是k,第三纬度0是3
size=[-1, 1, -1]:第一纬度所有指A,B,C。第二纬度1指k,m,第三纬度-1指所有。
所以为[[[3 3 3]] [[5 5 5]]]
例3
begin=[1, 0, 0]:第一纬度1是B,第二纬度0是k,第三纬度0是3
size=[-1, -1, -1]:第一纬度所有指A,B,C。第二纬度-1指所有,第三纬度-1指所有。
所以为从起始位置到结尾的所有[[[3 3 3] [4 4 4]] [[5 5 5] [6 6 6]]]
参见
https://www.jianshu.com/p/71e6ef6c121b