我的问题很简单,就是在Sequential模型中,传递给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
(可以从回调中访问)。 keras.models.training.fit
还调用keras.models.training._fit_loop
,将验证数据添加到callbacks.validation_data
中,并调用keras.models.training._test_loop
,将验证数据按批次循环处理在模型的self.test_function
上。该函数的结果用于填充日志的值,也就是回调可访问的值。
看到这一切,我觉得传递给model.fit
的验证集在训练过程中没有用于验证任何东西,它的唯一用途是为了获得有关训练模型在每个时期中如何执行的完全独立的数据。因此,使用相同的验证集和测试集应该没问题,对吗?
有人能否确认model.fit
中的验证集除了被读取回调之外是否还有其他目的?