1

在卷积神经网络中,我正在训练一个 CNN,在训练过程中,尤其是在训练开始时,我得到了极高的训练误差。之后,此错误开始缓慢下降。在大约 500 个 Epoch 之后,训练误差接近于零(例如 0.006604)。然后,我用最终得到的模型来衡量它对测试数据的准确度,我得到了大约 89.50%。这看起来很正常吗?我的意思是在我的训练过程一开始就获得很高的训练错误率。我想提到的另一件事是,我注意到每次减少隐藏节点的数量时,训练结束时结果都会变得更好。

我的CNN结构是:

 config.forward_pass_scheme = {'conv_v', 'pool', 'conv_v', 'pool', 'conv_v', 'pool', 'conv_v','full', 'full', 'full', 'out'};

以下是我的一些超参数:

  config.learning_rate = 0.01;
  config.weight_range = 2;
  config.decay = 0.0005;
  config.normalize_init_weights = 1;
  config.dropout_full_layer = 1;
  config.optimization = 'adagrad';

非常感谢您在这方面的帮助和建议,在此先感谢您。

4

2 回答 2

1

如果您在全连接 (fc) 层中有大量隐藏单元并且没有足够的训练数据,则网络将过度拟合训练集。卷积层不太容易过度拟合,因为它们的参数较少。减少 fc 层中隐藏单元的数量可以减少过拟合。为了调整这些超参数(如 fc 层中隐藏节点的数量),使用了验证集,以便模型在测试集上提供良好的性能。虽然 dropout 有助于减少 fc 层中的过拟合,但如果添加太多隐藏单元可能还不够。

是的,一开始,预计训练误差会很高。CNN 使用随机优化进行训练,因此需要一些时间来学习参数。

于 2016-03-15T20:43:35.357 回答
0

隐藏层/神经元越多,NN 中的权重就越大。这意味着更多的参数来模拟你的问题。因此,添加神经元/层可以提供更好的学习是有道理的。

另一方面,训练更多的权重意味着更多的过度拟合风险。确保训练集中的样本至少是 NN 中权重的 5 倍。

防止过拟合的另一种解决方案是使用 dropout。

顺便说一句,您使用哪个库?

于 2016-03-15T20:51:52.083 回答