关于model.fit()中的validation_split参数与train_test_split中的test_size参数的理解

1,139 阅读1分钟

validation_split:在0到1之间浮动。在训练模型时,模型将从训练集中分出该比例的数据,并不对其进行训练,在每个时期结束时评估此数据的损失和任何模型度量。另,validation_split的划分在shuffle之前,因此如果数据集本身是有序的,则需要先手动打乱数据集再指定validation_split,否则可能会出现验证机样本不均匀.
test_size: float or int,default = None.

If float, should be between 0.0 and 1.0 and represent the proportion
of the dataset to include in the test split. If int, represents the
absolute number of test samples. If None, the value is set to the
complement of the train size. If ``train_size`` is also None, it will
be set to 0.25.

如果是 `float`,应该在0.0~1.0之间,这个数值代表了该数据集中测试集的比例;如果是`int`,
这个数值代表了测试集具体的样本数量;如果是`None`,这个数值会被设置为训练数据集的补充,
如果1train_size1也为None,这个数值会被设为0.25.

为什么在对数据集进行完test_size切割之后,在train模型的时候还要设置一个validation_split? keras允许在训练模型的时候手动指定验证集。
例如,用sklearn库中的train_test_split() 函数将数据集进行切分,然后在kerasmodel.fit() 的时候通过validation_data参数指定前面切分出来的验证集.

train_X, val_X, train_Y, val_Y = train_test_split(traintitle, label, shuffle=True, test_size=0.2,random_state=42)
history = model.fit(train_X,train_Y,
                    batch_size=128,
                    epochs=10,
                    # validation_split=0.1,
                    validation_data=(val_X,val_Y),
                    validation_freq=1,
                   )

注意,在使用validation_data指定验证集时记得将类别标签进行转换.