0

我正在尝试实现成本函数,我目前有

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))我得到错误的部分。我对所有内容都有括号,所以我看不出它是如何应用一些部分功能或类似的东西。我确定这很愚蠢,但我似乎无法弄清楚。

4

1 回答 1

0

没关系,我很笨,我又回到了使用 .Sum() 的 C# 方式中。实际的使用方式是

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

这似乎解决了它。

于 2016-03-05T03:21:51.713 回答