我有一个大数据集(大约20GB用于培训,2GB用于测试)我想使用MXnet和R.由于内存不足,我搜索迭代器以通过自定义迭代器加载训练和测试集我找到了this解决方案。
现在,我可以使用此页面上的代码训练模型,但问题是如果我使用save iterator读取测试集如下:
test.iter <- CustomCSVIter$new(iter = NULL, data.csv = "test.csv", data.shape = 480, batch.size = batch.size)
然后,预测命令不起作用,page;
中没有预测模板preds <- predict(model, test.iter)
所以,我的具体问题是,如果我使用页面上的代码构建我的模型,我如何阅读我的测试集并预测其评估过程的标签?我的测试集和训练集在this format。
感谢您的帮助
答案 0 :(得分:2)
它实际上与您解释的完全一样。您只需使用模型和迭代器调用predict:
preds = predict(model, test.iter)
这里唯一的技巧是预测以列方式显示。我的意思是,如果你拿整个sample you are referring to,执行它并添加以下行:
test.iter <- CustomCSVIter$new(iter = NULL, data.csv = "mnist_train.csv", data.shape = 28, batch.size = batch.size)
preds = predict(model, test.iter)
preds[,1] # index of the sample to see in the column position
您收到:
[1] 5.882561e-11 2.826923e-11 7.873914e-11 2.760162e-04 1.221306e-12 9.997239e-01 4.567645e-11 3.177564e-08 1.763889e-07 3.578671e-09
这显示了训练集的第一个元素的softmax输出。如果您只是通过编写preds
来尝试打印所有内容,那么由于RStudio打印限制为1000,您将只看到空值 - 实际数据将无法显示。
请注意,我重复使用训练数据进行预测。我这样做,因为我不想调整迭代器的代码,它需要能够使用前面带有和没有标签的数据(训练和测试集)。在实际场景中,您需要调整迭代器,以便它可以使用和不使用标签。