F#函数需要太多参数或在预期的上下文中使用

时间:2016-03-05 03:04:33

标签: matrix f# mathnet

我试图实现成本函数,目前我已经

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

出于某种原因,我在第一个*之后的一半上得到一个错误&#34;此函数需要太多参数,或者在不期望函数的上下文中使用。&#34;

但是,当我这样做时

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))部分,我就会收到错误。我对所有内容都有括号,所以我不知道它是如何应用某些部分函数或沿着这些线条进行的。我确定它有些愚蠢,但我似乎无法弄明白。

1 个答案:

答案 0 :(得分: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

这似乎解决了这个问题。