深感以后的科研中,Julia语言的重要性与便捷性。打算开始从python向julia转向。

所以从现在开始学习julia的关于机器学习的包还有语法。

今天就来探讨一下Julia里面->的用法。

事情是这样:我在学习julia的机器学习包 flux的时候,其中有一个例子是这样:

using Flux.Tracker

W = param(W)

b = param(b)

gs = Tracker.gradient(() -> loss(x, y), params(W, b)) 

其中对->的用法不是很明白,查了一下发现这个属于匿名函数

关于flux里面的->的解释

根据上面的这个解释,也就是说x-> x^2+2x-1 就是一个函数,自变量是x,只不过没有名字而已。

不只是用x->x^2+2x-1,用function (x) 也是一种定义匿名函数的方法

因为正常定义一个函数是例如:

function 函数名(形式参数)

     Contents...

end

这种匿名函数的作用就是让函数成为一个参数来传递到另外的一个函数中用的。比如:

关于flux里面的->的解释

上面中第二个例子:x->x^2+2x-1就是个函数,把这个函数带到map函数里面(map函数的功能就是让输入的每个自变量都调用一次当作参数传入的函数。ie:1调用一次x->x^2+2x-1, 3调用一次x->x^2+2x-1,-1调用一次x->x^2+2x-1)。

接受多个参数的匿名函数写法可以使用语法 (x,y,z)->2x+y-z,而无参匿名函数写作 ()->3 。无参函数的这种写法看起来可能有些奇怪,不过它对于延迟计算很有必要。这种用法会把代码块包进一个无参函数中,后续把它当做 f 调用。 --来自引用julia官网原话。

 

 

相关文章:

  • 2021-11-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-25
  • 2021-09-24
猜你喜欢
  • 2022-12-23
  • 2021-09-08
  • 2021-11-02
  • 2021-11-17
  • 2021-10-27
相关资源
相似解决方案