我计划使用这个修改版的MNIST来进行基准测试研究,但它们目前是以.mat格式存储的。因此,我在StackOverflow上读到MatlabRecordReader
实际上并不那么robust,最明智的做法是将数据转换为CSV格式。我已经下载了Matlab,并将.mat文件转换为包含60000行(用于测试数据)的.csv文件,每行前784个值是图像本身的像素值,最后10个值是标签(虽然我相信我可以轻松地将标签压缩成第一个784个值之后的一个值)。
现在我有了这些数据,我不太确定如何正确地通过Iterator
将其传递给我的卷积神经网络。我查看了文档,但这并不是我所需要的,并且查找RecordReaderDatasetIterator
的文档中的示例也几乎不符合要求,因为它将CSV文件的行视为一维向量(而不是矩阵),或者将数据格式化为线性回归使用。
希望我已经解释得足够清楚了。请问有人可以帮助我吗?
回答:
使用CSVRecordReader,将标签作为0到9的整数附加到每一行的末尾。
在底部使用convolutionalFlat作为setInputType。示例代码片段: .setInputType(InputType.convolutionalFlat(28,28,1)) .backprop(true).pretrain(false).build();