pro*_*rth 5 f# mathnet-numerics
以下计算运行速度比R慢得多:
let result = (X.Transpose() * b * X).Inverse() * (X.Transpose() * b) * e // about 4 seconds on my machine
Run Code Online (Sandbox Code Playgroud)
或这个:
let result = (X.Transpose() * b * X).QR().Solve((X.Transpose() * b) * e)
Run Code Online (Sandbox Code Playgroud)
哪里
open MathNet.Numerics.LinearAlgebra
let X = DenseMatrix.init 2000 7 (fun i j -> 1.)
let b = SparseMatrix.ofDiag (vector [for i in 0 .. 1999 do yield 1.])
let e = DenseMatrix.init 2000 1 (fun i j -> 1.)
Run Code Online (Sandbox Code Playgroud)
但是在R中,通过以下方法可以实现相同的计算,只需要几百毫秒:
result <- solve(crossprod(X,b*X), crossprod(X,b*e)) // less than 200ms
Run Code Online (Sandbox Code Playgroud)
有没有办法加速F#计算?
[编辑]顺便说一句,SparseMatrix似乎是瓶颈.当使用DenseMatrix时,似乎有一个巨大的加速.
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |