来自 Keras中的训练和评估 :
当使用Dataset对象进行训练时,不支持参数validation_split(从训练数据生成一个holdout set),因为该特性要求能够索引数据集样本,而通常情况下使用Dataset API是无法实现的。
是否有解决方法?如何在使用TF Datasets时仍然使用验证集?
来自 Keras中的训练和评估 :
当使用Dataset对象进行训练时,不支持参数validation_split(从训练数据生成一个holdout set),因为该特性要求能够索引数据集样本,而通常情况下使用Dataset API是无法实现的。
是否有解决方法?如何在使用TF Datasets时仍然使用验证集?
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
文档和相关教程/笔记本。