随笔 - 934, 文章 - 0, 评论 - 249, 阅读 - 345万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Go读取MNIST数据

Posted on   蝈蝈俊  阅读(182)  评论(0编辑  收藏  举报

MNIST数据集(Mixed National Institute of Standards and Technology database)是美国国家标准与技术研究院收集整理的大型手写数字数据库,包含60,000个示例的训练集以及10,000个示例的测试集.

MNIST 数据集可在 http://yann.lecun.com/exdb/mnist/ 获取, 它包含了四个部分:

  • train-images-idx3-ubyte.gz: training set images (9912422 bytes),训练图像数据
  • train-labels-idx1-ubyte.gz: training set labels (28881 bytes),训练图像标签
  • t10k-images-idx3-ubyte.gz: test set images (1648877 bytes),测试图像数据
  • t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes),测试图像标签

以train-images-idx3-ubyte.gz为例,这是个压缩文件,需要解压为train-images.idx3-ubyte,用winhex打开此文件,如下图所示,00000803是固定,0000EA60表示有6万张图片,0000001C表示图片的宽度为28,接着0000001C表示图片的高度为28。

读取的代码可以看
https://gist.github.com/higuma/dbcd006546eb844c01e5102b4d0bcc93

使用上面代码读取第一个数字的例子


package main

import (
	"ghj1976/aigo/nn/mnist"
	"image"
	"image/color"
	"image/png"
	"log"
	"os"
)

func main() {

	dataSet, err := mnist.ReadTrainSet("../mnist")
	if err != nil {
		log.Fatal(err)
	}

	imCols := 28
	imRows := 28

	rect := image.Rect(0, 0, imCols, imRows)

	rgba := image.NewNRGBA(rect)

	log.Println(dataSet.Data[0].Digit)
	for dy := 0; dy < imCols; dy++ {
		for dx := 0; dx < imRows; dx++ {
			rgba.Set(dy, dx, color.Gray{dataSet.Data[0].Image[dx][dy]})
		}
	}

	fIm, err := os.Create("a0.png")

	if nil != err {
		log.Fatal(err)
	}

	err = png.Encode(fIm, rgba)

	if nil != err {
		log.Fatal(err)
	}

}

读取出来的是数字5

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2013-04-23 go build 和 go install 的区别
2013-04-23 WebSocket搭建一个简单的聊天室
2013-04-23 Golang的interface一个例子
点击右上角即可分享
微信分享提示