如何在Tensorflow中采样10%的数据集?

时间:2019-01-25 18:32:20

标签: python tensorflow

我有一个mnist数据集,我想使用其中的10%作为验证集。如何在Tensorflow中做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用Dataset方法,例如dataset.take()和dataset.skip()来提取一部分数据,并根据需要将其用于培训,测试或验证。

或者,您可以使用 scikit Learn 将数据拆分为一次测试和(培训+验证)数据,然后再次将(培训+验证)数据拆分为培训和验证。< / p>

import sklearn.model_selection as sk

X_train_val, X_test, y_train_val, y_test = sk.train_test_split(features,labels,test_size=0.5, random_state = 5)

X_train, X_val, y_train, y_val = sk.train_test_split(X_train_val,y_train_val,test_size=0.2, random_state = 5)

请记住要调整第二个拆分,以使测试大小占整个数据集而不是train_val数据集的所需百分比(总数据集的50%中的20%为10%)

答案 1 :(得分:0)

您应考虑提前对数据进行下采样,因为验证数据应与训练数据分开保存。

如果必须在tensorflow中采样数据,请考虑使用tensorflow dataset object中的shuffle。 从文档

  

随机播放   随机播放       缓冲区大小,       seed = None,       reshuffle_each_iteration = None)随机重排此数据集的元素。

     

Args:buffer_size:一个tf.int64标量tf.Tensor,代表   此数据集中新数据集将从中获得的元素数   样本。