Keras - 使用validation_split

时间:2018-03-21 13:07:02

标签: machine-learning scikit-learn keras

我已经训练了一个模型并在fit方法上使用validation_split=0.2,如下所示:

history = model.fit(X, Y, validation_split=0.2, epochs=700, batch_size=10, verbose=1,callbacks=[tb, checkpoint])

最佳权重保存为hdf5文件。由于数据的分割是由Keras validation_split完成的,所以我没有可用的测试集。如何在没有测试集的情况下绘制混淆矩阵?

1 个答案:

答案 0 :(得分:1)

根据the documentation of fit()

  

validation_split:在0和1之间浮动。训练数据的分数   用作验证数据。该模型将分开这一部分   培训数据,不会对其进行培训,并将评估损失   以及每个时代结束时此数据的任何模型指标。该   从x和y数据中的最后样本中选择验证数据   在洗牌之前提供。

因此,您可以通过获取X的最后20%来轻松地自行计算验证数据。

source code似乎就是这样做的:

       elif validation_split and 0. < validation_split < 1.:
            do_validation = True
            if hasattr(x[0], 'shape'):
                split_at = int(x[0].shape[0] * (1. - validation_split))
            else:
                split_at = int(len(x[0]) * (1. - validation_split))
            x, val_x = (_slice_arrays(x, 0, split_at), _slice_arrays(x, split_at))
            y, val_y = (_slice_arrays(y, 0, split_at), _slice_arrays(y, split_at))

首先得到分裂指数(样本数* 0.8),然后将以下部分作为验证。