2 回答

TA貢獻1859條經(jīng)驗 獲得超6個贊
問: 如果沒有,是否有其他解決方案可以解決此問題?
是的,有辦法。
實施分布式處理工作流。讓 JavaScript 發(fā)揮它的作用,讓numpy
Side 完成它非常擅長的工作。類似的概念在許多用例中很常見,其中專用工具解決部分問題,一些工作流集成中介將分布式部分“粘合”在一起。
因此,讓 JavaScript 部分配備 ZeroMQ/zmq
或nanomsg
,A, B
通過互連與 python 端通信,那里 numpy 將盡其所能進行智能、矢量化的數(shù)字處理,并讓接收到的結(jié)果傳回下一個階段處理工作流。
ZeroMQ 多年來擁有用于非常快速和高效的無協(xié)議{ ipc:// | vmci:// }
本地主機互連的智能工具,此外還有用于{ tcp:// | udp:// | ... }
數(shù)據(jù)中心互連的類似智能但非本地的協(xié)議,如果你的本地主機資源對于更大的矩陣大小會變得非常小。
有類似的工具準備就緒nanomsg
,但您必須檢查 JavaScript 端可用端口/包裝器的可用性。
剩下的就是為任何給定的數(shù)據(jù)量和前端/后端事務運行的請求節(jié)奏擠出最大性能。
在~ 80 [ms]
您的想象力下使用此架構(gòu)進行周轉(zhuǎn)時間是您的極限。也盡可能快地完成了一些多TB
線性代數(shù)處理,在那里需要更加小心,但性能驅(qū)動的原則是相同的。

TA貢獻1853條經(jīng)驗 獲得超9個贊
我知道自從提出這個問題已經(jīng)有一段時間了,但是現(xiàn)在(2021 年)有一些用于在 JS 中進行線性代數(shù)的庫,我將其留在這里以供參考:
僅舉幾例。從您的問題來看,您似乎正在嘗試解決最小二乘估計量:
如果是這種情況,與計算偽逆(即使用 LU/QR/SVD 分解)相比,上述庫中的大多數(shù)(全部?)提供了更穩(wěn)健/高性能的解決方案:
// Using ml-matrix
const { Matrix, solve } = require('ml-matrix');
var X = new Matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
var y = Matrix.columnVector([8, 20, 32]);
var b = solve(X, y, (useSVD = true));
// Using linear algebra js
const { SparseMatrix, DenseMatrix } = require('linear-algebra');
// solve the linear system Ax = b, where A is a square sparse matrix
var X = SparseMatrix.identity(5, 5);
var y = DenseMatrix.ones(5, 1);
var lu = X.lu();
var b = lu.solveSquare(y);
但是,如果你真的需要計算偽逆,ml-matrix 是唯一支持這個的庫(據(jù)我所知)。原則上,Eigen 也支持此功能,但我還沒有看到任何 JS 端口實際公開此功能。
添加回答
舉報