如何读取R中的MNIST数据库?

 一个人跳舞飘 发布于 2023-01-29 18:04

我目前正在研究一个案例研究,我需要在MNIST数据库上工作.
该站点中的文件称为IDX文件格式.我尝试使用基本的文本编辑器(如记事本和wordpad)来查看这些文件,但没有运气.
期待它们将采用高端格式,我尝试了以下方法:

to.read = file("t10k-images.idx3-ubyte", "rb")
readBin(to.read, integer(), n=100, endian = "high")

我得到了一些数字作为输出,但没有一个对我有任何意义.

任何人都可以解释如何读取R中的MNIST数据库文件以及如何解释这些数字?谢谢.

1 个回答
  • 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这可能有用.

    2023-01-29 18:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有