У меня есть блочные диагональные матрицы, такие как
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]?