我是指Keras中validation_split
方法中的fit
参数:
validation_split:在0到1之间浮动。训练数据的分数 用作验证数据。模型将分开这部分 训练数据,将不会对其进行训练,并将评估损失 以及在每个时期结束时对此数据的任何模型指标。的 从x和y数据的最后一个样本中选择验证数据 在改组之前提供。
我注意到默认值是0,而不是传统的0.2或0.33。我无法确定为什么他们选择使用0作为默认值,因为我认为没有验证集总是会导致训练过度。我在这个假设上错了吗?
答案 0 :(得分:1)
验证集用于检测过度拟合,而没有验证集仅意味着您无法检测过度拟合。这并不意味着模型会自动过度拟合。请记住,根本不使用验证数据来训练模型,因此,如果不使用验证数据,则模型的行为可能不会有所不同。
也就是说,没有默认验证集是有道理的,因为最后是 human ,他通过查看学习曲线以及训练与验证损失之间的差异来检测过度拟合。 (目前)该过程无法实现自动化,因此人员必须确定验证拆分的值,或者仅在validation_data
参数中自行提供验证数据。
答案 1 :(得分:0)
有时您想自己定义验证数据,然后传递参数validation_data= (x_val, y_val)
有时您需要进行K折交叉验证。
有时候,您根本不想要验证数据。
系统无法假定您的训练数据包括验证,这对用户而言不是一件好事。
至于过度拟合,取决于模型和数据。不一定总会过拟合。