下采样张量

时间:2020-06-24 14:54:03

标签: tensorflow tensorflow2.0 tensorflow2.x

让我们假设我们有一个形状为findContours( img(cv::Rect(x,y,width,height)), contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0,0) ); 的3D张量,并且我们想丢弃a = [batch_size, length, 1]轴上每5个样本。每个批次元素的新索引可以计算为length

您能帮我获得一个较短的张量形状indices = tf.where(tf.range(a.shape[1]) % 5 != 0),其中b = [batch_size, length2, 1]的操作吗?我认为这可以通过length2 = 4/5 * length来实现,但是在以正确的格式提供索引时遇到了问题。以3D张量为参数,将索引张量tf.gather_nd瓦片化并提供最终的2D张量到batch_size并不简单。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以简单地执行以下操作:

import tensorflow as tf
# Example data
a = tf.reshape(tf.range(60), [5, 12, 1])
print(a.numpy()[:, :, 0])
# [[ 0  1  2  3  4  5  6  7  8  9 10 11]
#  [12 13 14 15 16 17 18 19 20 21 22 23]
#  [24 25 26 27 28 29 30 31 32 33 34 35]
#  [36 37 38 39 40 41 42 43 44 45 46 47]
#  [48 49 50 51 52 53 54 55 56 57 58 59]]
# Mask every one in five items
mask = tf.not_equal(tf.range(tf.shape(a)[1]) % 5, 0)
b = tf.boolean_mask(a, mask, axis=1)
# Show result
print(b.numpy()[:, :, 0])
# [[ 1  2  3  4  6  7  8  9 11]
#  [13 14 15 16 18 19 20 21 23]
#  [25 26 27 28 30 31 32 33 35]
#  [37 38 39 40 42 43 44 45 47]
#  [49 50 51 52 54 55 56 57 59]]