2016-02-29 49 views
0

我刚从火炬和神经网络开始,只是看了很多示例代码和教程,我看到人们如何构建他们的神经网络有很多种类。有像Linear(),Tanh(),Sigmoid()以及MSE,ClassNLL,MultiMargin等标准。构建神经网络的标准

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

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

感谢

回答

1

这里是一个很好的网页包含的一些主要功能激活的利弊;

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

它可以在手下去的问题煮沸,知道什么时候出现问题该怎么办。举个例子,如果你有一个庞大的数据集,你不能很快地通过它,那么为了快速达到本地最小值,一个ReLU可能会更好。然而,你可能会发现一些ReLU单位“死亡”,所以你可能想跟踪特定层中被激活的神经元的比例,以确保没有发生。

就标准而言,它们也是特定问题,但有点不明确。例如,二元分类的二元交叉熵,回归的MSE等等,这实际上取决于整个项目的目标。

对于整体网络架构,我个人发现它可能是一个尝试不同架构并查看哪些架构工作,哪些不在您的测试集上的案例。如果您认为手头的问题非常复杂,并且您需要一个复杂的网络来解决问题,那么您可能会想尝试创建一个非常深的网络,然后每次添加/删除几个图层以查看是否你有/ overfitted。作为另一个例子,如果你使用卷积网络并且输入相对较小,那么你可以尝试使用一组较小的卷积滤波器来开始。