BeiBatched 4D Tensor Tensorflow Indizierung
batch_images
: 4D Tensor Form(B, H, W, C)
x
: 3D-Tensor Form(B, H, W)
y
: 3D-Tensor Form(B, H, W)
Ziel
Wie kann ich Index in batch_images
mit der x
und y
koordiniert ein 4D-Tensor Form B, H, W, C
zu erhalten. Das heißt, ich möchte für jede Charge und für jedes Paar (x, y)
einen Tensor der Form C
erhalten.
In numpy, würde dies zum Beispiel mit input_img[np.arange(B)[:,None,None], y, x]
erreicht werden, aber ich kann nicht scheinen es in Tensorflow arbeiten.
Mein Versuch so weit
def get_pixel_value(img, x, y):
"""
Utility function to get pixel value for
coordinate vectors x and y from a 4D tensor image.
"""
H = tf.shape(img)[1]
W = tf.shape(img)[2]
C = tf.shape(img)[3]
# flatten image
img_flat = tf.reshape(img, [-1, C])
# flatten idx
idx_flat = (x*W) + y
return tf.gather(img_flat, idx_flat)
die (B, H, W)
einen falschen Tensor Form zurückkehrt.