关于Julia中MXNet中符号API的查询

关于Julia中MXNet中符号API的查询,julia,mxnet,Julia,Mxnet,我正在努力理解《朱莉娅》中MXNet的象征性API细微差别。我在MXNet文档中看到了一个示例,其行如下: act1 = mx.Activation(data = fc1, name=:relu1, act_type=:relu) 为什么act\u type指定了符号:relu :relu是函数指针吗?如果不是,那么我们在哪里将值分配给:relu符号?为什么数据没有指定符号?为什么名称被指定为符号而不是字符串?符号是类型为“symbol”的变量的有效值。我的猜测是,内部有一个switch风格的

我正在努力理解《朱莉娅》中MXNet的象征性API细微差别。我在MXNet文档中看到了一个示例,其行如下:

act1 = mx.Activation(data = fc1, name=:relu1, act_type=:relu)
为什么
act\u type
指定了符号
:relu


:relu
是函数指针吗?如果不是,那么我们在哪里将值分配给
:relu
符号?为什么数据没有指定符号?为什么名称被指定为符号而不是字符串?

符号是类型为“symbol”的变量的有效值。我的猜测是,内部有一个
switch
风格的语句,它根据传递的符号应用特定的子例程,或者,正如您所说,符号本身用于调用特定的函数。事实上,它是一个符号而不是一根弦,这大概只是一个设计问题;没有什么能阻止我们定义这样一个函数,比如获取一个字符串参数,然后使用该字符串调用函数

请注意,符号与“函数句柄”不同(我认为这是您混淆它的地方)。换句话说,不,您没有使用此语法将“函数指针”作为参数传递


数据没有分配符号,因为在调用函数时,您可能要将实际数据作为第一个参数传递。

当您说的是根据传递的符号执行的开关样式语句时,是否意味着:可以检查relu symbol的某些名称。typeof(:relu)将给出结果符号。那么,我们如何检查哪种类型的符号被传递是的。如果name==:relu;callrelu();elseif name==:世博会;callexpo();结束。话虽如此,看看源代码,MXNet库似乎是基于python的。有时在PyCall中使用符号来调用python模块的各个成员。e、 g.如果在python中有
mx.relu
,在julia中通常会变成
mx[:relu]
。这很可能就是这里发生的事情,
relu
mx
python模块的成员或类似的东西。正如我所怀疑的,这是PyCall语法。查看python中的等效文档。(例如,使用pip安装mxnet,然后在python中执行
导入mxnet
然后
帮助(mxnet.symbol.Activation)
)。请注意(只要安装了python模块),您就可以通过julia通过使用PyCall执行
mxnet=pyimport(“mxnet”)
pybuiltin(“帮助”)(mxnet[:symbol][:Activation])
感谢您的解释