Эффективное последовательное блочно-диагональное матричное умножение с тензорным потоком

У меня есть блочно-диагональные матрицы вроде

Bdiag1 = [[A, 0, 0], [0, B, 0], [0, 0, C]]

который я могу определить в тензорном потоке, используя LinearOperatorBlockDiag, а затем эффективно вычислить матричное произведение двух таких блочно-диагональных матриц Bdiag1*Bdiag2.

Новая матрица сохраняется как alinear_operator_composition, хотя это все же блочная диагональ. Это означает, что любое последующее матричное умножение не будет иметь диагональной структуры.

Есть ли способ заставить тензорный поток сохранять продукт в виде блочно-диагональной матрицы?

Если это невозможно, есть ли способ определить вектор матриц [A,B,C], где мы можем делать такие вещи, как [A,B,C].matmul([D,E,F]) = [A* D,B* E,C* F]?

0 ответов

Другие вопросы по тегам