Tensorflow:提取所有其他元素

时间:2017-10-13 02:03:45

标签: python tensorflow

我有一个时间序列(表示为张量),形状为[Batch_Size, T, 40]。现在,我想从时间步长0开始提取序列中的所有其他向量,并扩展到2,4,...,从而产生大小为[Batch_Size, T/2, 40]的大小。

在TensorFlow中执行此操作的最有效/最快的方法是什么?请注意,T是固定的,如果有帮助则已知。

提前致谢!

1 个答案:

答案 0 :(得分:2)

使用切片表示法并在需要提取/采样的第二个轴上指定2的步长:

t[:,::2]

实施例

import tensorflow as tf
​
t = tf.reshape(tf.range(24), (2,6,2))
​
sess = tf.Session()
print('original: \n', sess.run(t), '\n')
print('every other: \n', sess.run(t[:,::2]))
original: 
 [[[ 0  1]
  [ 2  3]
  [ 4  5]
  [ 6  7]
  [ 8  9]
  [10 11]]

 [[12 13]
  [14 15]
  [16 17]
  [18 19]
  [20 21]
  [22 23]]] 

every other: 
 [[[ 0  1]
  [ 4  5]
  [ 8  9]]

 [[12 13]
  [16 17]
  [20 21]]]