【发布时间】:2017-05-04 04:09:45
【问题描述】:
我目前正在尝试使用交叉验证来训练神经网络,但我不确定我是否了解交叉验证的工作原理。我理解这个概念,但我还不能完全理解这个概念是如何转化为代码实现的。以下是对我实现的内容的描述,这或多或少是猜测。
我将整个数据集拆分为K-folds,其中1折为验证集,1折为测试集,其余折中的数据转储到训练集。
然后,我循环 K 次,每次都将验证集和测试集重新分配给其他折叠。在每个循环中,我只使用训练集持续训练网络(更新权重),直到网络产生的错误达到某个阈值。 但是,用于决定何时停止训练的错误是使用验证集产生的,而不是训练集。 训练完成后,错误再次产生,但这次使用的是测试放。记录测试集中的这个错误。 最后,所有权重都被重新初始化(使用最初用于初始化它们的相同随机数生成器)或以某种方式重置,以撤消在继续进行下一组验证、训练和测试集。
一旦所有 K 循环完成,K 循环的每次迭代中记录的错误都会被平均。
我已将我最困惑的部分加粗。如果我犯了任何错误,请告诉我!
【问题讨论】:
-
这个问题更适合stats.stackexchange.com 而不是 SO,因为它不是关于编程的问题,而是关于统计的问题。
标签: validation machine-learning cross-validation