我有一个mnist数据集,我想使用其中的10%作为验证集。如何在Tensorflow中做到这一点?
答案 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,代表 此数据集中新数据集将从中获得的元素数 样本。