如何知道哪个模块导出某个函数
How to know which module exports a certain function
我正在学习这个 Flux.jl 教程并遇到了一个叫做 Chain
的东西。
m = Chain(Dense(10, 5, relu), Dense(5, 2), softmax)
它不是从任何使用的模块导入的,也没有使用命名空间,所以我不知道它属于哪个模块。虽然我设法发现我属于 Flux 包,但我想知道是否有一种通用的方法可以在脚本中解决这个问题。
要找出特定函数的来源,可以使用 parentmodule
函数:
julia> parentmodule(Chain)
Flux
在 Julia 文档中阅读更多内容:https://docs.julialang.org/en/v1/base/base/#Base.parentmodule
请注意,正如文档所述,parentmodule(<function>)
仅 returns 包含 first 函数定义的模块,这不一定是我们关心的一个。在这种情况下,这无关紧要,因为 Chain
仅在 Flux
中有定义,但有时一个函数在多个包中都有定义,应用哪个包取决于参数的类型。
parentmodule
也可以帮助你,如果你将你的参数类型传递给它(例如 parentmodule(Chain, (Dense, Dense, Function))
这里),但我通常只倾向于使用 @which
宏观:
julia> @which Chain(Dense(10, 5, relu), Dense(5, 2), softmax)
Chain(xs...) in Flux at /home/Sundar/.julia/packages/Flux/BPPNj/src/layers/basic.jl:33
输出稍显嘈杂,但它会告诉您应用了函数的哪个特定方法、它来自哪个模块以及您可以找到方法定义的确切位置。
我正在学习这个 Flux.jl 教程并遇到了一个叫做 Chain
的东西。
m = Chain(Dense(10, 5, relu), Dense(5, 2), softmax)
它不是从任何使用的模块导入的,也没有使用命名空间,所以我不知道它属于哪个模块。虽然我设法发现我属于 Flux 包,但我想知道是否有一种通用的方法可以在脚本中解决这个问题。
要找出特定函数的来源,可以使用 parentmodule
函数:
julia> parentmodule(Chain)
Flux
在 Julia 文档中阅读更多内容:https://docs.julialang.org/en/v1/base/base/#Base.parentmodule
请注意,正如文档所述,parentmodule(<function>)
仅 returns 包含 first 函数定义的模块,这不一定是我们关心的一个。在这种情况下,这无关紧要,因为 Chain
仅在 Flux
中有定义,但有时一个函数在多个包中都有定义,应用哪个包取决于参数的类型。
parentmodule
也可以帮助你,如果你将你的参数类型传递给它(例如 parentmodule(Chain, (Dense, Dense, Function))
这里),但我通常只倾向于使用 @which
宏观:
julia> @which Chain(Dense(10, 5, relu), Dense(5, 2), softmax)
Chain(xs...) in Flux at /home/Sundar/.julia/packages/Flux/BPPNj/src/layers/basic.jl:33
输出稍显嘈杂,但它会告诉您应用了函数的哪个特定方法、它来自哪个模块以及您可以找到方法定义的确切位置。