来自 用Keras进行培训和评估:
当从Dataset对象进行训练时,不支持参数validation_split(从训练数据中生成一个保持集),因为这个功能需要能够对数据集的样本进行索引,而一般的Dataset API是不可能做到的。
有什么变通的办法吗?如何还能使用TF数据集的验证集?
不,你不能使用 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
文档和相关教程笔记。