У меня есть матрица g
формы [4, 4, 2, 2]
, где мне нужно найти ранг g[0, 0]
, g[1, 1]
, g[2, 2]
и g[3, 3]
, которые являются 2x2
матрицами. Я использовал оператор tf.rank
, но он обрабатывает g
как один массив, вычисляет ранг и возвращает одно значение для всей матрицы. Что мне нужно, это 2x2
матрица рангов соответствующих g[i, j]
. Ниже приводится MWE:
import tensorflow as tf
import numpy as np
a = np.array([
[[[ 0., 0.], [ 0., 0.]], [[-1., -1.], [-1., -1.]], [[-2., -2.], [-2., -2.]], [[-3., -3.], [-3., -3.]]],
[[[ 1., 1.], [ 1., 1.]], [[ 0., 0.], [ 0., 0.]], [[-1., -1.], [-1., -1.]], [[-2., -2.], [-2., -2.]]],
[[[ 2., 2.], [ 2., 2.]], [[ 1., 1.], [ 1., 1.]], [[ 0., 0.], [ 0., 0.]], [[-1., -1.], [-1., -1.]]],
[[[ 3., 3.], [ 3., 3.]], [[ 2., 2.], [ 2., 2.]], [[ 1., 1.], [ 1., 1.]], [[ 0., 0.], [ 0., 0.]]]
])
rank = tf.rank(a) # Returns a number
Помимо использования for
l oop, есть ли способ получить эту матрицу рангов? Спасибо.