【发布时间】:2016-02-27 10:32:57
【问题描述】:
Deeplearning4j 具有支持将数据集拆分为测试和训练的功能,以及洗牌数据集的机制,但据我所知,它们要么不起作用,要么我做错了什么。
例子:
DataSetIterator iter = new IrisDataSetIterator(150, 150);
DataSet next = iter.next();
// next.shuffle();
SplitTestAndTrain testAndTrain = next.splitTestAndTrain(120, new Random(seed));
DataSet train = testAndTrain.getTrain();
DataSet test = testAndTrain.getTest();
for (int i = 0; i < 30; i++) {
String features = test.getFeatures().getRow(i).toString();
String actual = test.getLabels().getRow(i).toString().trim();
log.info("features " + features + " -> " + actual );
}
返回输入数据集的最后 30 行结果,splitTestAndTrain 的 Random(seed) 参数似乎已被完全忽略。
如果我没有将随机种子传递给 splitTestAndTrain 而是取消注释 next.shuffle() 行,那么奇怪的是,第 3 和第 4 个特征会被打乱,同时保持第 1 个和第 2 个特征的现有顺序以及测试标签,这比根本不对输入进行排序还要糟糕。
所以...问题是,我用错了,还是 Deeplearning4j 本身就坏了?
额外问题:如果 Deeplearning4j 因生成测试和样本数据集这样简单的事情而被破坏,那么它是否应该被信任?还是我最好使用不同的库?
【问题讨论】:
-
请加入我们的 Gitter。我们将帮助您修复它:gitter.im/deeplearning4j/deeplearning4j
标签: java machine-learning deep-learning