gpt4 book ai didi

python - Keras Sequential 模型中使用的验证数据是什么?

转载 作者:IT老高 更新时间:2023-10-28 22:00:31 25 4
gpt4 key购买 nike

我的问题很简单,什么是验证数据传递给序列模型中的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))

我调查了一下,发现 keras.models.Sequential.fit 调用 keras.models.training.fit,它会创建像 val_acc 这样的变量val_loss(可以从 Callbacks 访问)。 keras.models.training.fit 还调用 keras.models.training._fit_loop,将验证数据添加到 callbacks.validation_data,并且还调用keras.models.training._test_loop,在模型的self.test_function上批量循环验证数据。此函数的结果用于填充日志的值,即回调可访问的值。

看到这一切后,我觉得传递给model.fit的验证集在训练期间并没有用来验证任何东西,它唯一的用途是获得关于训练后的模型将如何执行的反馈在每个 epoch 中都是一个完全独立的集合。因此,使用相同的验证和测试集是没问题的,对吧?

谁能确认 model.fit 中的验证集除了从回调中读取之外还有其他目标吗?

最佳答案

如果您想构建一个实体模型,您必须遵循将数据分成三组的特定协议(protocol):一组用于训练,一组用于验证,一组用于最终评估,也就是测试集

我们的想法是,您使用您的训练数据进行训练,并使用您从验证集中获得的指标结果(准确度、损失等)来调整您的模型。

您的模型没有“看到”您的验证集,也没有以任何方式对其进行训练,但作为超参数的架构师和大师,您会根据这些数据调整模型。 因此,它会间接影响您的模型,因为它直接影响您的设计决策。您插入您的模型与验证数据很好地配合,这可能会带来倾斜。

正是因为这个原因,你只评估你的模型和你自己都没有使用过的数据的模型的最终分数——这就是第三组数据,你的测试集。

只有这个过程才能确保您对模型质量和概括从完全看不见的数据中学到的知识的能力没有影响。

关于python - Keras Sequential 模型中使用的验证数据是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46308374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com