我的问题很简单,传递给 model.fit 的 Sequential 模型中的验证数据是什么?
而且,它是否会影响模型的训练方式(例如,通常使用验证集来选择模型中的超参数,但我认为这不会发生在这里)?
我说的是可以像这样传递的验证集:
# 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
在训练期间并没有用来验证任何东西,它唯一的用途是获得关于训练模型在每个 epoch 对于一个完全独立的集合的表现的反馈。因此,使用相同的验证和测试集是没问题的,对吧?
除了从回调中读取之外,任何人都可以确认 model.fit 中的验证集是否还有其他目标?