最佳答案
我的问题很简单,什么是验证数据传递给 model?
它是否会影响模型的训练方式(例如,通常使用验证集来选择模型中的超参数,但我认为这里不会发生这种情况) ?
我说的是可以这样传递的验证集:
# 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
(可以从 Callback 访问)的变量。keras.models.training.fit
还调用 keras.models.training._fit_loop
,它将验证数据添加到 callbacks.validation_data
,还调用 keras.models.training._test_loop
,它将在模型的 self.test_function
上成批地循环验证数据。此函数的结果用于填充日志的值,这些值是可从回调访问的值。
在看到这些之后,我觉得传递给 model.fit
的验证集并不用于在训练期间验证任何东西,它唯一的用途是获得关于训练后的模型在每个时代如何执行的反馈,这是一个完全独立的集合。因此,使用相同的验证和测试集是可以的,对吗?
有没有人可以确认,model. fit 中的验证集除了从回调函数中读取之外,是否还有其他目的?