dan*_*idc 34 python validation training-data keras keras-2
我的问题很简单,什么是验证数据传递的顺序模型model.fit 使用?
并且,它是否会影响模型的训练方式(通常使用验证集,例如,在模型中选择超参数,但我认为这不会发生在这里)?
我在谈论可以像这样传递的验证集:
# Create model
model = Sequential()
# Add layers
model.add(...)
# Train model (use 10% of training set as validation set)
history = model.fit(X_train, Y_train, validation_split=0.1)
# Train model (use validation data as validation set)
history = model.fit(X_train, Y_train, validation_data=(X_test, Y_test))
Run Code Online (Sandbox Code Playgroud)
我调查了一下,我看到keras.models.Sequential.fit调用keras.models.training.fit,这就好比创建变量val_acc和val_loss(可从回调来访问).keras.models.training.fit还调用keras.models.training._fit_loop,它将验证数据添加到callbacks.validation_data调用中,并且还调用keras.models.training._test_loop,这将self.test_function在模型的批量上循环验证数据.此函数的结果用于填充日志的值,这些值是可从回调中访问的值.
看到这一切之后,我觉得传递给它的验证集model.fit并不用于在训练期间验证任何东西,它的唯一用途是获得关于训练模型在完全独立集合的每个时期中如何执行的反馈.因此,使用相同的验证和测试集会很好,对吧?
任何人都可以确认除了从回调中读取之外,model.fit中的验证集是否还有其他任何目标?
pet*_*ich 42
如果要构建实体模型,则必须遵循将数据拆分为三组的特定协议:一个用于培训,一个用于验证,一个用于最终评估,即测试集.
我们的想法是,您可以训练您的训练数据,并使用从验证集中获得的指标(准确度,损失等)结果来调整模型.
您的模型没有"看到"您的验证集,也没有以任何方式对其进行过培训,但您作为超参数的架构师和主人根据此数据调整模型.因此,它间接影响您的模型,因为它直接影响您的设计决策.您轻推模型以便与验证数据一起使用,并且可能会导致倾斜.
这正是您只评估模型最终得分的原因,这些数据既不是您的模型也不是您自己使用的 - 这是第三块数据,即您的测试集.
只有这个程序才能确保您获得模型质量的未受影响的视图,并能够概括在完全看不见的数据上学到的内容.
bla*_*tor 11
此YouTube视频介绍了验证集是什么,为什么它有用,以及如何在Keras中实现验证集:在Keras中 创建验证集
使用验证集,您基本上可以从训练集中取出一小部分样本,或者一起创建一个全新的集合,并通过训练保留此集合中的样本.
在每个时期,模型将在训练集中的样本上进行训练,但不会对验证集中的样本进行训练.相反,模型将仅验证验证集中的每个样本.
这样做的目的是让您能够判断模型的概括性.意思是,您的模型能够在数据上预测它在训练时没有看到的情况.
拥有验证集还可以深入了解您的模型是否过度拟合.这可以通过比较来解释acc,并loss从你的训练样本的val_acc和val_loss从您的验证样品.例如,如果你的acc位置很高,但是你val_acc的落后,那么这就是你的模型过度拟合的良好迹象.
我认为对训练集、验证集和测试集的全面讨论将有所帮助:
总结:
这里又是一些实际问题:
| 归档时间: |
|
| 查看次数: |
30687 次 |
| 最近记录: |