构建神经网络的标准

时间:2016-02-29 02:19:50

标签: neural-network deep-learning torch

我刚开始使用Torch和神经网络,只是看了很多示例代码和教程,我看到人们构建神经网络的方式有很多种。有像Linear(),Tanh(),Sigmoid()这样的层,以及像MSE,ClassNLL,MultiMargin等标准。

我想知道在创建网络结构时人们会记住哪些因素?例如,我知道在ClassNLLCriterion中,您希望网络的最后一层是LogSoftMax()层,以便您可以输入正确的日志概率。

创建这些网络时是否还有其他一般规则或指南?

由于

1 个答案:

答案 0 :(得分:1)

这是一个很好的网页,其中包含一些主要激活功能的优缺点;

http://cs231n.github.io/neural-networks-1/#actfun

它可以归结为手头的问题,并知道出现问题时该怎么做。例如,如果你有一个巨大的数据集,并且你不能非常快速地通过它,那么ReLU可能会更好,以便快速达到局部最小值。但是你可以发现一些ReLU单位" die"因此,您可能希望跟踪特定层中激活的神经元的比例,以确保没有发生这种情况。

就标准而言,它们也是针对特定问题的,但不那么模棱两可。例如,二元交叉熵用于二元分类,MSE用于回归等。这实际上取决于整个项目的目标。

对于整体网络架构,我个人认为可以尝试不同的架构,看看哪些架构有效,哪些架构不在你的测试集上。如果您认为手头的问题非常复杂并且您需要一个复杂的网络来解决问题,那么您可能希望尝试建立一个非常深的网络,然后一次添加/删除几个层以查看是否你有不足/过度装修。再举一个例子,如果你使用卷积网络并且输入相对较小,那么你可以尝试使用一小组卷积滤波器来开始。