【问题标题】:Torch implementation of multi-output-layer neural network多输出层神经网络的 Torch 实现
【发布时间】:2016-12-30 00:31:49
【问题描述】:

我将构建一个具有多个输出层架构的神经网络。更具体地说,它旨在在一系列卷积层之上构建并行程序。一个分支是计算分类结果(softmax-like);另一种是得到回归结果。但是,我一直在设计模型以及选择损失函数(标准)。

我。我应该使用火炬容器nn.Parallel()nn.Concat() 作为conv 层顶部的分支层(nn.Sequential())吗?除了数据格式有什么不同。

二。由于输出数据,分类损失函数和回归损失函数将线性组合。我想知道是否要针对确定的容器选择nn.MultiCriterion()nn.ParallelCriterion()。或者我必须自定义一个新的标准类。

三。做过类似工作的任何人都可以告诉我,torch 是否需要额外的定制来实施 backprop 进行训练。我担心火炬容器的数据结构问题。

【问题讨论】:

    标签: neural-network deep-learning convolution torch


    【解决方案1】:
    1. ConcatParallel 的不同之处在于,Concat 中的每个模块都将最后一层的整个输出作为输入,而 Parallel 的每个输入都取最后一层的输出切片.出于您的目的,您需要 Concat,而不是 Parallel,因为这两个损失函数都需要获取序列网络的全部输出。

    2. 基于MultiCriterionParallenCriterion 的源代码,它们实际上做了同样的事情。重要的区别在于,在MultiCriterion 的情况下,您提供了多个损失函数,但只有一个目标,并且它们都是针对该目标计算的。假设你有一个分类和一个回归任务,我假设你有不同的目标,所以你需要ParallelCriterion(false),其中false 启用多目标模式(如果参数是true ParallelCriterion 似乎表现与@987654334 相同@)。那么target 应该是单个标准的目标表。

    3. 如果您使用ConcatParallelCriterion,torch 应该能够为您正确计算梯度。两者都实现了updateGradInput,它正确地合并了各个块的梯度。

    【讨论】:

      猜你喜欢
      • 2013-03-02
      • 2016-10-21
      • 2019-08-02
      • 2012-01-16
      • 2017-09-28
      • 2018-11-05
      • 2021-09-22
      • 1970-01-01
      相关资源
      最近更新 更多