Javascript 如何将一个大型数据集拆分为2,以便使用Tensorflow.js进行验证?
我在Node.js中使用了一个支持Nvidia CUDA的GPU(请注意,这不是Python),并且我已经实现了一个AI模型。我有一个Javascript 如何将一个大型数据集拆分为2,以便使用Tensorflow.js进行验证?,javascript,node.js,artificial-intelligence,tensorflow.js,Javascript,Node.js,Artificial Intelligence,Tensorflow.js,我在Node.js中使用了一个支持Nvidia CUDA的GPU(请注意,这不是Python),并且我已经实现了一个AI模型。我有一个Dataset对象,它表示我想要训练模型的输入数据 然而,我想对我的数据进行80%-20%的分割,其中80%用于培训,20%用于验证 在中,存在用于指定验证数据的validationData设置 但不幸的是,我只有一个Dataset对象来表示我的整个Dataset 此外,我的训练数据是临时的,而且非常大,我的Dataset对象由生成器函数支持。为此,我希望最后20
Dataset
对象,它表示我想要训练模型的输入数据
然而,我想对我的数据进行80%-20%的分割,其中80%用于培训,20%用于验证
在中,存在用于指定验证数据的validationData
设置
但不幸的是,我只有一个Dataset对象来表示我的整个Dataset
此外,我的训练数据是临时的,而且非常大,我的Dataset
对象由生成器函数支持。为此,我希望最后20%的数据集
对象充当我的验证数据
在不将单个
数据集
对象全部加载到内存中的情况下,将其拆分为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)
啊,我明白了。不过,我不太理解那里的
I
变量。它在哪里递增?无论如何,如果我只想要最后一个连续的20%,并且我知道我有多少个条目,我可以过滤I>=total*0.8
?对不起,我忘了增加I
。如果您想要最后20%,并且知道最初有多少行,可以使用skip
操作符。如果需要第一行,可以使用take
操作符