在Keras中利用np.random.shuffle()打乱数据集

设计师

0 👍 / 0 💬

补充知识:Keras中shuffle和validation_split的顺序

模型的fit函数有两个参数:

shuffle用于将数据打乱;

validation_split用于在没有提供验证集的时候,按一定比例从训练集中取出一部分作为验证集,比如设为0.1,就是去1/10的数据作为验证集。

这里有个陷阱是,程序是先执行validation_split,再执行shuffle的,OMG!

所以会出现这种情况:假如你的训练集是有序的,比方说正样本在前负样本在后,又设置了validation_split,那么你的验证集中很可能将全部是负样本

同样的,这个东西不会有任何错误报出来,因为Keras不可能知道你的数据有没有经过shuffle,保险起见如果你的数据是没shuffle过的,最好手动shuffle一下,不然会害死人!

代码如下:

#假设你已经得到训练集X_train和训练标签Y_train

index = [i for i in range(len(X_train))]

np.random.shuffle(index)

print(index)

X_train = X_train[index]

Y_train = Y_train[index]

print(X_train.shape)

print(Y_train.shape)


专栏:Startpistol的文章