我想找到一个集合(内部(中与另一个不同(较小(大小集合(边界(中的每个点最接近的点。我可以这样做:
interior = tf.random.uniform(shape=[18,3], minval=-1.0, maxval=1.0)
boundary = tf.random.uniform(shape=[12,3], minval=-1.0, maxval=1.0)
for i in range(12):
interior[tf.argmin(tf.reduce_sum(tf.math.squared_difference(interior, boundary[i]),1))]
有没有更快的方法?例如,没有For循环,但同时用于边界中的所有点。
我们可以使用广播,
indices = tf.argmin(tf.reduce_sum(tf.math.squared_difference(tf.expand_dims(interior, 1), tf.expand_dims(boundary, 0)), 2), axis=0)
然后
tf.gather(interior, indices)