tôi thấy rằng đang có hai phiên bản của pinv()
chức năng này sẽ tính giả nghịch đảo của một ma trận trong Scipy
và numpy
, các tài liệu có thể được xem tại địa chỉ:Sự khác biệt của giả nghịch đảo giữa scipy và NumPy
http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.pinv.html
http://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.pinv.html
vấn đề là tôi có một ma trận 50000 * 5000, khi sử dụng scipy.linalg.pinv
, nó chi phí cho tôi hơn 20GB bộ nhớ. Nhưng khi tôi sử dụng numpy.linalg.pinv
, chỉ ít hơn 1 GB bộ nhớ được sử dụng ..
Tôi đã tự hỏi tại sao numpy
và scipy
cả hai đều có pinv
khi triển khai khác nhau. Và tại sao màn trình diễn của họ quá khác biệt.
phương pháp 'SVD' và phương pháp' nhỏ nhất', cái nào tốt hơn .. –
"tốt hơn" là một thuật ngữ rất chủ quan. Chỉ có bạn biết những gì bạn cần giả đảo ngược cho ở nơi đầu tiên. Có lẽ bạn cũng có các tiêu chí về hiệu suất và tính ổn định số của các thuật toán của bạn. Cho dù cái nào là "tốt hơn" là cái tốt nhất đáp ứng tiêu chí của bạn. – talonmies