Решите прямоугольные разреженные системы линейных уравнений с помощью cupy

Я пытаюсь решить прямоугольную систему для разреженных функций, используя cupy. Я знаю, что встроенная функция sparse.linalg.lsqr(A, b) делает это для квадратной матрицы A. Однако мне нравится решать прямоугольную разреженную систему. Вот как мы можем решить квадратную систему:

Import cupy as cp

A = cp.sparse.rand(200, 100, density=0.1)
b = cp.random.random(100)

x = cp.sparse.linalg.lsqr (A, b)
print(x)

Это дает ошибку несоответствия размеров для прямоугольных систем, и я не могу найти встроенный разреженный метод, эквивалентный, например, cupy.tensorsolve().

Кстати, есть ли способ сделать это с помощью Tensorflow? Спасибо за помощь. Я использую блокнот Google Colaboratory.


person Nacho    schedule 30.08.2018    source источник


Ответы (2)


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

Это можно реализовать, заключив lsqr в MAGMA как показано в этом примере.

person Yuki Hashimoto    schedule 11.11.2018

Вы можете ссылаться на https://docs-cupy.chainer.org/en/stable/reference/linalg.html для текущих вспомогательных функций cupy для линейной алгебры. Я могу найти cupy.linalg.tensorsolve, но пока не могу найти cupy.linalg.lsqr.

Также я думаю, что было бы неплохо пометить этот вопрос как «cupy» или «numpy».

person corochann    schedule 30.08.2018