gpt4 book ai didi

f# - 为什么管道向后运算符在这种情况下不起作用? F#

转载 作者:行者123 更新时间:2023-12-02 11:58:37 25 4
gpt4 key购买 nike

let J = (-1.0 * y) .* MatrixMath.log  <| Activation.sigmoid (X * theta)
let J = (-1.0 * y) .* MatrixMath.log (Activation.sigmoid (X * theta))

我有以下两组代码,前者给出编译错误,提示“此函数需要太多争论”,但后者工作正常。

我认为向后管道运算符的目标本质上是改变求值的顺序,这正是我想要做的。

如何在不使用括号的情况下编写表达式?

编辑:

MatrixMath.log 就是这样做的

type MatrixMath =
static member log X = X |> Matrix.map log
static member log X = X |> Vector.map log

最佳答案

管道运算符的优先级较低。您尝试评估的是这样的:

let J = ((-1.0 * y) .* MatrixMath.log) <| (Activation.sigmoid (X * theta))

或类似的暴行。

如果您确实需要在那里放置向后管道,请尝试如下操作:

let J = (-1.0 * y) .* (MatrixMath.log <| Activation.sigmoid <| X * theta)

或者将其分成两行:

let J = 
let K = MatrixMath.log <| Activation.sigmoid (X * theta)
(-1.0 * y) .* K

关于f# - 为什么管道向后运算符在这种情况下不起作用? F#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35975794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com