1

我正在尝试使用神经网络进行分类,数据集由 7 个参数和超过 30 万个样本组成。通过使用 dropout,我想看看 dropout 对我的网络有什么影响。我使用的是 Matlab。但是,matlab 没有关于 dropout 的完整文档。我发现了一些关于 dropout 的论文,但其中大部分都是针对图像的深度神经网络,并且方法非常复杂。我曾尝试通过 matlab 使用 nnstart,但是我不确定我是否可以通过这种方式添加 dropout。有没有什么方法可以使用 matlab 的 dropout 进行简单的神经网络?

如果您可以分享一些信息或可能与我的问题相关的 matlab 代码,那就太好了。

4

2 回答 2

0

您需要从 300K 样本中拿出一个验证集。然后在其他样本上训练和测试网络,并在保留的验证集上评估性能。为您的辍学和非辍学网络执行此操作。

于 2017-10-02T16:45:28.343 回答
0

使用 dropouts 背后的想法是防止过度拟合。如果将 dropout 设置为 0.1,那么对于每个 epoch 内的每次迭代,该层中的每个节点都有 10% 的概率从神经网络中删除。这本质上迫使网络学习更深层次和更重要的关系,而不是学习导致过度拟合的琐碎关系。

一个好的方法是想象这是通过描绘一个基于神经网络的二元分类器来预测图像是否是猫的。如果我们在训练时使用橙色猫的图像而没有丢失,那么模型检测黑色猫的图像是否真的是猫的能力可能会非常低。但是,当您添加 dropout 时,它可能会开始理解猫的特征而不是橙色猫的特征,因为将激活更少(更重要)的节点,而这些节点可能是更重要的节点。

虽然我以前没有使用过 Matlab,但您可能可以在 matlab 中创建一个自定义函数,该函数遵循以下伪代码:

go through each of the nodes:
   if random(0,10) == 1:
      drop/turn off node i
于 2018-07-19T01:15:02.493 回答