我有一个时间序列(表示为张量),形状为[Batch_Size, T, 40]
。现在,我想从时间步长0开始提取序列中的所有其他向量,并扩展到2,4,...,从而产生大小为[Batch_Size, T/2, 40]
的大小。
在TensorFlow中执行此操作的最有效/最快的方法是什么?请注意,T
是固定的,如果有帮助则已知。
提前致谢!
答案 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]]]