与validation_data相比,使用validation_split进行Keras fit可获得更高的结果

时间:2018-09-29 19:49:40

标签: python python-3.x tensorflow keras

我正在使用以下 fit 函数:

history = model.fit(x=[X1_train, X2_train, X3_train],
                y=y_train,
                batch_size=50,
                epochs=20,
                verbose=2,
                validation_split=0.3,
                #validation_data=([X1_test, X2_test, X3_test], y_test),
                class_weight={0:1, 1:10})

,并且平均val_acc为0.7。但是,当再次运行时,这次使用validation_data选项(使用我保留的同一数据集中的数据,大小约为火车数据的30%),我得到的平均val_acc为0.35。有什么理由得到这种差异?

1 个答案:

答案 0 :(得分:0)

根据OP的要求,我将发表评论作为答案,并尝试详细说明:

设置validation_split参数时,将从训练数据和标签(即X_trainy_train)的最后一个样本中选择验证样本。现在,在这种特定情况下,如果这些选定样本中类别标签的比例与您使用validation_data参数提供的数据中类别标签的比例不同,那么您不必一定会期望验证损失在这两种情况下要相同。那仅仅是因为您的模型在每个类上的准确性可能不同。