我目前正在研究一个案例研究,我需要在MNIST数据库上工作.
该站点中的文件称为IDX文件格式.我尝试使用基本的文本编辑器(如记事本和wordpad)来查看这些文件,但没有运气.
期待它们将采用高端格式,我尝试了以下方法:
to.read = file("t10k-images.idx3-ubyte", "rb") readBin(to.read, integer(), n=100, endian = "high")
我得到了一些数字作为输出,但没有一个对我有任何意义.
任何人都可以解释如何读取R中的MNIST数据库文件以及如何解释这些数字?谢谢.
endian="big"
,不是"high"
:
> to.read = file("~/Downloads/t10k-images-idx3-ubyte", "rb")
幻数:
> readBin(to.read, integer(), n=1, endian="big") [1] 2051
图像数量:
> readBin(to.read, integer(), n=1, endian="big") [1] 10000
行数:
> readBin(to.read, integer(), n=1, endian="big") [1] 28
列数:
> readBin(to.read, integer(), n=1, endian="big") [1] 28
这里有数据:
> readBin(to.read, integer(), n=1, endian="big") [1] 0 > readBin(to.read, integer(), n=1, endian="big") [1] 0
根据网站上的训练集图像数据描述.
现在你只需要将28*28字节块循环并读入矩阵.
重新开始:
> to.read = file("~/Downloads/t10k-images-idx3-ubyte", "rb")
跳过标题:
> readBin(to.read, integer(), n=4, endian="big") [1] 2051 10000 28 28
应该真正从标题读取28,28但硬编码在这里:
> m = matrix(readBin(to.read,integer(), size=1, n=28*28, endian="big"),28,28) > image(m)
可能需要移调或翻转矩阵,我认为它是一个颠倒的"7".
par(mfrow=c(5,5)) par(mar=c(0,0,0,0)) for(i in 1:25){m = matrix(readBin(to.read,integer(), size=1, n=28*28, endian="big"),28,28);image(m[,28:1])}
得到你:
哦,谷歌引导我:http://www.inside-r.org/packages/cran/darch/docs/readMNIST这可能有用.