初始化神经网络模型kfold

时间:2019-11-13 22:57:45

标签: python model neural-network training-data

我在k折开始之前初始化了网络模型。

这是否意味着该模型在第一个折叠中进行训练,而该模型的训练后的权重在第二个折叠中进行,依此类推?如果最后一折不好并且整个模型不好怎么办?

1 个答案:

答案 0 :(得分:1)

这取决于您“初始化网络”的意思,您应该显示一些代码片段以使人们了解您的问题。

原则上,k倍交叉验证是一种用于更好地估计模型性能的技术。 这个概念很简单,您只要将数据集拆分为训练/测试即可使用k倍,您可以在测试集中使用看不见的样本来估算性能/错误,但通常数据并不完美,有点脏,因此可能会发生“坏”的样本最终出现在测试集中,当您使用它们评估模型的性能时,您将获得一个不代表真实样本的值。

为减少误差/性能估计中的误差,您可以将数据集分成k个均匀分布的折叠,然后训练k次新模型(因此,权重都是从头开始初始化的),每次都在k个不同的“折叠”,并在数据集的其余样本上对其进行训练。

enter image description here

这样做,您将对模型的错误/性能有k个不同的估计。

如果要使用单个值作为度量,则只需对结果取平均值。 当然,您可以使用结果执行任何操作,可以选择最佳模型,可以平均k个模型的权重,可以平均“前n个”模型的权重,等等。

因此,回答您的问题,不,您不会保持体重。 在您正在训练的k个模型上,可能会出现其中一个“坏”的情况,但是您使用k折只是为了验证模型,而没有更好地训练它! 验证后,您可以决定要做什么。 您正在寻找一种衡量模型“良好”程度的方法,通过这样做,您可以更加确定结果是否接近实际价值。

如果要使用数据集减少其他类型的错误(例如过度拟合或其他错误),则应检查集成方法。

我希望这会有所帮助