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

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

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]?

...