使用TensorFlow数据集创建验证集

3

来自 Keras中的训练和评估

当使用Dataset对象进行训练时,不支持参数validation_split(从训练数据生成一个holdout set),因为该特性要求能够索引数据集样本,而通常情况下使用Dataset API是无法实现的。

是否有解决方法?如何在使用TF Datasets时仍然使用验证集?


1
正如所发布的,答案是明确且不含糊的“不”,这一点从文档链接中显而易见。如果您想问“我如何仍然使用TF数据集中的验证集”,请相应地重新表述。 - desertnaut
1个回答

6
不,你不能使用validation_split(文档中已经清楚说明),但你可以手动创建validation_data并创建Dataset。你可以在同一tensorflow教程中看到一个例子:
# Prepare the training dataset
train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
train_dataset = train_dataset.shuffle(buffer_size=1024).batch(64)

# Prepare the validation dataset
val_dataset = tf.data.Dataset.from_tensor_slices((x_val, y_val))
val_dataset = val_dataset.batch(64)

model.fit(train_dataset, epochs=3, validation_data=val_dataset)

您可以通过简单的切片从numpy数组((x_train, y_train)(x_val, y_val))创建这两个数据集,如下所示:

(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_val = x_train[-10000:]
y_val = y_train[-10000:]
x_train = x_train[:-10000]
y_train = y_train[:-10000]

还有其他创建tf.data.Dataset对象的方法,请参见tf.data.Dataset文档和相关教程/笔记本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接