Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 卷积神经网络训练开始时训练误差大_Image Processing_Neural Network_Conv Neural Network_Recurrent Neural Network_Biological Neural Network - Fatal编程技术网

Image processing 卷积神经网络训练开始时训练误差大

Image processing 卷积神经网络训练开始时训练误差大,image-processing,neural-network,conv-neural-network,recurrent-neural-network,biological-neural-network,Image Processing,Neural Network,Conv Neural Network,Recurrent Neural Network,Biological Neural Network,在卷积神经网络中, 我正在训练CNN,在训练过程中,特别是在训练开始时,我得到了极高的训练错误。之后,该错误开始缓慢下降。大约500个纪元后,训练误差接近于零(例如0.006604)。然后,我将最终得到的模型与测试数据进行比较,得到了大约89.50%的准确度。 这看起来正常吗?我的意思是,在培训过程的一开始,就有很高的培训错误率。 我想提到的另一件事是,我注意到,每次减少隐藏节点的数量,训练结束后效果都会更好 我的CNN结构是: config.forward_pass_scheme = {'c

在卷积神经网络中, 我正在训练CNN,在训练过程中,特别是在训练开始时,我得到了极高的训练错误。之后,该错误开始缓慢下降。大约500个纪元后,训练误差接近于零(例如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';

非常感谢您在这方面的帮助和建议,提前感谢您

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


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

隐藏层/神经元越多,神经网络中的权重就越大。这意味着需要更多的参数来模拟问题。因此,增加神经元/层有助于更好地学习

另一方面,训练的重量越多,就意味着过度装配的风险越大。确保训练集中的样本数至少是NN中权重的5倍

防止过度装配的另一种解决方案是使用脱落


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

亲爱的Bharat,谢谢你的回答,事实上,我正在做的是,在每个历元之后(完全通过训练数据),我使用训练集中的一批来评估训练错误。这就是你所说的验证集吗?。另一件事,我已经使用了Adagrad优化方法的辍学。从您的回答中,我了解到,正常情况下,在开始时会出现较高的训练错误。验证集与训练集是分开的。尽管通过观察训练误差可以了解优化是否收敛,但它不能判断模型是否过拟合。因此,使用验证集(或不用于培训的培训集的一小部分)来测量模型的性能。是的,在第一次历元训练之后,错误可能很高。不,在我的情况下,它不同。它从高处开始,然后慢慢下降。但是,我在测试集上得到了很好的结果。亲爱的FiReTiTi,谢谢你的帮助,在你说的前两行中,使用更多的层/神经元将获得更好的结果,但是在我的CNN中发生的事情,随着我减少隐藏神经元的数量,将获得更好的结果。我使用这段代码[here]()权重初始化是随机的,因此在相同的数据上运行两次相同的架构可能会提供不同的结果。当我在回答中提到结果时,我会说得更具体一些,我的意思是学习。权重越大,学习效果越好,但测试集上的预测可能越差。这就是我所想的。每次随机生成权重是否正确?什么是确保每个实现的最佳结果或不太相同的结果的最佳方法。请您向我解释一下这是什么意思(请确保您的训练集中至少有5倍多的样本,并且您的NN中有权重)。设置相同权重的唯一方法是在生成随机值之前指定种子。