Dataset之MNIST:自定义函数mnist.load_mnist根据网址下载mnist数据集(四个ubyte.gz格式数据集文件)
Dataset之MNIST:自定义函数mnist.load_mnist根据网址下载mnist数据集(四个ubyte.gz格式数据集文件)
目录
下载结果
运行代码
下载结果
运行代码
mnist.py文件
# coding: utf-8
try:import urllib.request
except ImportError:raise ImportError('You should use Python 3.x')
import os.path
import gzip
import pickle
import os
import numpy as npurl_base = 'http://yann.lecun.com/exdb/mnist/'
key_file = {'train_img':'train-images-idx3-ubyte.gz','train_label':'train-labels-idx1-ubyte.gz','test_img':'t10k-images-idx3-ubyte.gz','test_label':'t10k-labels-idx1-ubyte.gz'
}dataset_dir = os.path.dirname(os.path.abspath(__file__))
save_file = dataset_dir + "/mnist.pkl"train_num = 60000
test_num = 10000
img_dim = (1, 28, 28)
img_size = 784def _download(file_name):file_path = dataset_dir + "/" + file_nameif os.path.exists(file_path):returnprint("Downloading " + file_name + " ... ")urllib.request.urlretrieve(url_base + file_name, file_path)print("Done")def download_mnist():for v in key_file.values():_download(v)def _load_label(file_name):file_path = dataset_dir + "/" + file_nameprint("Converting " + file_name + " to NumPy Array ...")with gzip.open(file_path, 'rb') as f:labels = np.frombuffer(f.read(), np.uint8, offset=8)print("Done")return labelsdef _load_img(file_name):file_path = dataset_dir + "/" + file_nameprint("Converting " + file_name + " to NumPy Array ...") with gzip.open(file_path, 'rb') as f:data = np.frombuffer(f.read(), np.uint8, offset=16)data = data.reshape(-1, img_size)print("Done")return datadef _convert_numpy():dataset = {}dataset['train_img'] = _load_img(key_file['train_img'])dataset['train_label'] = _load_label(key_file['train_label']) dataset['test_img'] = _load_img(key_file['test_img'])dataset['test_label'] = _load_label(key_file['test_label'])return datasetdef init_mnist():download_mnist()dataset = _convert_numpy()print("Creating pickle file ...")with open(save_file, 'wb') as f:pickle.dump(dataset, f, -1)print("Done!")def _change_one_hot_label(X):T = np.zeros((X.size, 10))for idx, row in enumerate(T):row[X[idx]] = 1return Tdef load_mnist(normalize=True, flatten=True, one_hot_label=False):"""读入MNIST数据集Parameters----------normalize : 将图像的像素值正规化为0.0~1.0one_hot_label : one_hot_label为True的情况下,标签作为one-hot数组返回one-hot数组是指[0,0,1,0,0,0,0,0,0,0]这样的数组flatten : 是否将图像展开为一维数组Returns-------(训练图像, 训练标签), (测试图像, 测试标签)"""if not os.path.exists(save_file):init_mnist()with open(save_file, 'rb') as f:dataset = pickle.load(f)if normalize:for key in ('train_img', 'test_img'):dataset[key] = dataset[key].astype(np.float32)dataset[key] /= 255.0if one_hot_label:dataset['train_label'] = _change_one_hot_label(dataset['train_label'])dataset['test_label'] = _change_one_hot_label(dataset['test_label'])if not flatten:for key in ('train_img', 'test_img'):dataset[key] = dataset[key].reshape(-1, 1, 28, 28)return (dataset['train_img'], dataset['train_label']), (dataset['test_img'], dataset['test_label']) if __name__ == '__main__':init_mnist()
Dataset之MNIST:自定义函数mnist.load_mnist根据网址下载mnist数据集(四个ubyte.gz格式数据集文件)相关推荐
- hive 元数据 自定义_如何在Hive中创建自定义函数UDF及如何直接通过Impala的同步元数据重用UDF的jar文件-阿里云开发者社区...
如何在Hive中创建自定义函数UDF及使用 如何在Impala中使用Hive的自定义函数 UDF函数开发 使用Intellij工具开发Hive的UDF函数,进行编译: 1.使用Intellij工具通过 ...
- Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介、下载、使用方法(包括数据增强)之详细攻略
Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介+数据增强(将已有MNIST数据集通过移动像素上下左右的方法来扩大数据集为初始数据集的5倍) 目录 MNIST ...
- Dataset之MNIST:MNIST(手写数字图片识别及其ubyte.gz文件)数据集简介、下载、使用方法(包括数据增强)之详细攻略
Dataset之MNIST:MNIST(手写数字图片识别及其ubyte.gz文件)数据集简介.下载.使用方法(包括数据增强,将已有MNIST数据集通过移动像素上下左右的方法来扩大数据集为初始数据集的5 ...
- 下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)
下载MNIST数据集并使用python将数据转换成NumPy数组 首先来分析init_mnist函数 接下来继续分析load_mnist函数 实现数据集转换的python脚本的代码 显示MNIST图像 ...
- 机器学习实战3-sklearn使用下载MNIST数据集进行分类项目
目录 1.MNIST数据集 2.训练一个二元分类器 2.1.随机梯度下降(SGD)分类器 2.2.分类器的性能考核: 2.2.1.混淆矩阵 2.2.2.精度:(我的理解:预测集内,预测正确的比率) 2 ...
- 机器学习之sklearn使用下载MNIST数据集进行分类识别
机器学习之sklearn使用下载MNIST数据集进行分类识别 一.MNIST数据集 1.MNIST数据集简介 2.获取MNIST数据集 二.训练一个二分类器 1.随机梯度下降(SGD)分类器 2.分类 ...
- 如何利用自定义函数把阳历转换成阴历
数据库保存的是阳历日期,有时候会遇到把阳历换成阴历的需求,例如下图把阳历转换成阴历. 这个问题是我在开发报表过程中遇到的一个小需求,利用的工具是FineReport8.0版本,解决思路是首先定义一个可 ...
- 帆软日期格式转换_自定义函数把阳历转换成阴历
3.1 阳历转阴历的类 FineReport 提供一个现成的农历日历工具类 SolarToLunar,该类中通过 today(int year, int month, int day)方法可将输入的年 ...
- 如何利用自定义函数把阳历转换成阴历 1
数据库保存的是阳历日期,有时候会遇到把阳历换成阴历的需求,例如下图把阳历转换成阴历. 这个问题是我在开发报表过程中遇到的一个小需求,利用的工具是FineReport8.0版本,解决思路是首先定义一个可 ...
最新文章
- 【Codeforces Round #767 (Div. 2)】 C. Meximum Array 题解
- 前端技术分享:一个超级好用的CSS样式表
- 嵩天-Python语言程序设计程序题--第三周:基本数据类型
- Vue+element 解决浏览器自动填充记住的账号密码问题
- 迎亚运 广州推出全国首个地铁导向地图
- TCP粘包产生的原因、解决办法
- png转jpg java_怎么把图片PNG格式转换成JPG格式?
- 将 hexo 部署到云服务器
- 自定义表单控件(我是一个粉刷匠)
- Oracle Comment添加表备注和列备注添加和查询comment on table or culumn
- linux---常用命令(二)
- 无人值守地磅称重系统方案的设计原理
- cacti nagios nginx squid等怎么读?
- 【V2ray 报错 failed to read response header】
- android获取后一天日期,android获取本周本月本年的第一天和最后一天
- mycat - 解开它神秘的面纱
- 影视金曲-爱你一生嫌未够_昆仑奴插曲》
- python线程和进程
- win10系统磁盘清理,临时文件删不掉 的解决方案
- 6.xftp需要强制升级
热门文章
- mysql if exists 数据表_使用IF NOT EXISTS创建数据表
- python自动抢红包软件_快过年啦,还怕手速慢,我用Python自动抢红包!
- 服务端统一时间戳 boost::date_time UTC
- objective c 语法
- Atom编写Markdown
- 生态聚伙伴 方案联价值 华为首次发布企业业务解决方案伙伴计划
- 使用DocFX生成文档
- 安装zabbix4.0+grafana
- 解决windows10 wireshark无法抓取发出去的包只能抓取接受数据包
- 我司用了 6 年的 Redis 分布式限流器,很牛逼了!