Keras:如何随机抽取验证集样本?

Hag*_*ard 5 python keras tensorflow

我目前正在训练一个 Keras 模型,其相应的拟合调用如下所示:

model.fit(X,y_train,batch_size=myBatchSize,epochs=myAmountOfEpochs,validation_split=0.1,callbacks=myCallbackList)
Run Code Online (Sandbox Code Playgroud)

Keras Github 页面上的这条评论解释了“validation_split=0.1”的含义:

验证数据不一定取自每个类,它只是数据的最后 10%(假设您要求 10%)。

我现在的问题是:是否有一种简单的方法可以随机选择(例如)训练数据的 10% 作为验证数据?我想使用随机选取的样本的原因是,最后 10% 的数据不一定包含我的案例中的所有类。

非常感谢。

Hag*_*ard 2

感谢Matias Valdenegro的评论,我受到启发,进一步研究并针对我的问题提出了以下解决方案:

from sklearn.model_selection import train_test_split
[input: X and Y]
XTraining, XValidation, YTraining, YValidation = train_test_split(X,Y,stratify=Y,test_size=0.1) # before model building
[The model is built here...]
model.fit(XTraining,YTraining,batch_size=batchSize,epochs=amountOfEpochs,validation_data=(XValidation,YValidation),callbacks=callbackList)
Run Code Online (Sandbox Code Playgroud)

  • 还使用随机状态的种子每次生成相同的随机测试和验证数据。train_test_split(X,Y,stratify=Y,test_size=0.1, random_state=0) #你可以使用任何整数 (3认同)