如何使用 Tensorflow.js 将大型数据集一分为二进行验证?

How do I split a large Dataset in 2 for validation with Tensorflow.js?

我在 Node.js 中使用 Tensorflow.js 和支持 Nvidia CUDA 的 GPU(请注意,这不是 Python),并且我已经实现了一个 AI 模型。我有一个 Dataset 对象,代表我想用来训练模型的输入数据。

但是,我想对我的数据进行 80% - 20% 的拆分,其中 80% 用于训练,20% 用于验证。

.fitDataset() method 中,存在用于指定验证数据的 validationData 设置。

不幸的是,我只有一个数据集对象代表我的整个数据集。

此外,我的训练数据是临时的并且非常大 - 我的 Dataset 对象由生成器函数支持。为此,我希望 Dataset 对象的最后 20% 作为我的验证数据。

将单个 Dataset 对象拆分为 2 而无需将其全部加载到内存中以便我可以将其最后 20% 用作验证数据的最有效方法是什么?

数据不是全部加载到内存而是迭代加载。因此可以对加载的数据应用过滤以分成两个数据集

// first load the dataset
const csvDataset = tf.data.csv(csvUrl);

//split dataset
let i = 0;
trainDataset = csvDataset.filter(x => i++%5 !== 0)
i = 0
testDataset = csvDataset.filter(x => i++%5 === 0)