Преобразование индекса диапазона в координаты в tensorflow

#tensorflow #tensorflow2.0

#tensorflow #tensorflow2.0

Вопрос:

Я хочу преобразовать этот вид индексации:

 a = tf.ones((500, 1000))
a[1:150, 50:700]
  

В :

 a[idx_x, idx_y]
  

Очевидно, мы можем использовать while цикл для построения двух векторов. Но каков наиболее эффективный способ сделать это в tensorflow?

Ответ №1:

Вы можете генерировать значения индекса как:

 idx_x, idx_y = tf.meshgrid(tf.range(1, 150), tf.range(50, 700), indexing='ij')
  

Затем вы должны использовать их как:

 b = tf.gather_nd(a, tf.stack([idx_x, idx_y], axis=-1))