矢量化张量流步骤的正确方法

Correct way to vectorise tensorflow step

我正在处理 4 维张量,需要进行一些计算,如下例所示。取 A 为形状为 (6,64,64,64) 的张量。我想使用函数 tf.where 获取每个 (64,64,64) 体积值大于 0.75 的体素。我设法做到这一点的唯一方法是这样的:

X = tf.convert_to_tensor([tf.where(A[i,:,:,:] > 0.75) for i in range(A.shape[0])]

这似乎是一个非常粗略的解决方案。有没有更好的方法来实现这个?

您尝试做的事情的问题是它要求每个 (64, 64, 64) 卷具有相同数量的大于 0.75 的值。如果是这种情况,您可以执行以下操作:

X = tf.reshape(tf.where(A > 0.75)[:, 1:], (A.shape[0], -1, A.shape.ndims - 1))

但如果不是这种情况,你就不能有这样的张量,因为第二个维度需要有多个大小。