2016-03-05 34 views
0

我想實現一個成本函數,我現在有F#函數將在上下文中使用的參數太多或沒有預期

let computeCost (X : Matrix<double>) (y : Vector<double>) (theta : Vector<double>) = 
    let m = y.Count |> double 
    let J = (1.0/(2.0*m))*(((X*theta - y) |> Vector.map (fun x -> x*x)).Sum) 
    J 

出於某種原因,我在第一後獲得的半錯誤*說:「這個函數需要太多的參數,或者在不需要函數的上下文中使用。」

然而,當我做到這一點

let computeCost (X : Matrix<double>) (y : Vector<double>) (theta : Vector<double>) = 
    let m = y.Count |> double 
    let J = (((X*theta - y) |> Vector.map (fun x -> x*x)).Sum) 
    J 

它運行完美,它說,val J:float這是我的期望。但只要在第二部分中加入(1.0/(2.0*m))部分,我就會收到錯誤信息。我在所有方面都有括號,所以我沒有看到它是如何應用某些部分函數或沿着這些方向的東西。我敢肯定,這是愚蠢的,但我似乎無法弄清楚。

回答

0

沒關係,我很愚蠢,我回落到我的C#中使用.SUM()用它的實際方式方法是

let computeCost (X : Matrix<double>) (y : Vector<double>) (theta : Vector<double>) = 
    let m = y.Count |> double 
    let J = (1.0/(2.0*m)) * (((X*theta - y) |> Vector.map (fun x -> x*x)) |> Vector.sum) 
    J 

這似乎解決它。

相關問題