【问题标题】:the confuse of 'nn' , 'dp' and 'dpnn' module in TorchPytorch 中 'nn' 、 'dp' 和 'dp nn' 模块的困惑
【发布时间】:2016-07-30 17:24:10
【问题描述】:

当我阅读一些火炬代码时,我对“nn”和“dp”模型感到困惑。我在许多代码中看到只需要 dp(没有 nn),但为什么它可以使用 nn.methodA?为什么它可以在不需要它的情况下使用 nn ?此外,该方法定义在 dpnn!它应该用作 dpnn.methodA 吗?代码是这样的:

   require 'dp'
   ...
   nn.methodA() [the methodA is defined in 'dpnn']

【问题讨论】:

    标签: torch


    【解决方案1】:

    'dp' 有 'nn' 作为依赖项,并且需要 'nn'。更具体地说,当调用require 'dp' 时,会运行“dp”的初始化脚本。这调用require 'dpnn' (see)。随后运行“dpnn”的初始化脚本并调用require 'nn' (see)。

    此外,模块共享相同的全局命名空间。这意味着模块可以设置 abc 或 nn 或其他。许多模块扩展了“nn”的命名空间以包含额外的功能。

    【讨论】:

    • 谢谢,那么如何扩展'nn'的命名空间,代码中是否使用了关键字?
    • 因为它们是 'nn' 包的扩展,所以将它们放在同一个命名空间中看起来更清晰、更易于理解。这在某种程度上也表明它们是兼容的,并且都是 nn.Module 的扩展。
    • github.com/Element-Research/dpnn/blob/master/Inception.lua#L18 基本上是module, parent = torch.class('nn.ModuleName', 'nn.Parent')
    • 1 'nn' 包的扩展是什么意思? dpnn在它的init文件中只需要'nn',所以如果A在它的init文件中需要B,我们可以说模块A是模块B的扩展? 2这段代码是什么意思:module,parent=torch.class('nn.模块名称','nn.Parent')?我只能知道它初始化两个类,即。模块和父级?我们怎么知道我们可以使用 nn.methodA,因为 methodA 是在 dpnn 中定义的?
    • 哦,我知道了,所以模块,parent = torch.class('nn.ModuleName', 'nn.Parent') 为方法分配了名称 nn.ModuleName,我们可以访问它在哪里?
    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    相关资源
    最近更新 更多