#python #pytorch
Вопрос:
Я работаю над тем, чтобы попытаться получить собственные векторы матрицы продуктов Кронекера, крон(A, B), используя собственные векторы каждого из факторов Кронекера, A и B. Я считаю, что каждый собственный вектор матрицы продуктов Кронекера является произведением Кронекера между собственным вектором A и собственным вектором B.
Я уже получил собственные векторы факторов, но у меня возникли проблемы с поиском эффективного способа получения собственных векторов крона(A, B), который не включает в себя перебор двух матриц факторов.
Вот что у меня есть (a, b-факторы Кронекера).
evals_a, evecs_a = torch.linalg.eigh(a)
evals_b, evecs_b = torch.linalg.eigh(b)
Вот что я хотел бы эффективно реализовать:
evecs_kron_ab = []
for evec_a in evecs_a:
for evec_b in evecs_b:
evec_kron_ab = torch.kron(evec_a, evec_b)
evecs_kron_ab.append(evec_kron_ab)
В идеале список собственных векторов также является тензором, в котором каждая строка является собственным вектором