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格式数据集文件)相关推荐

  1. hive 元数据 自定义_如何在Hive中创建自定义函数UDF及如何直接通过Impala的同步元数据重用UDF的jar文件-阿里云开发者社区...

    如何在Hive中创建自定义函数UDF及使用 如何在Impala中使用Hive的自定义函数 UDF函数开发 使用Intellij工具开发Hive的UDF函数,进行编译: 1.使用Intellij工具通过 ...

  2. Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介、下载、使用方法(包括数据增强)之详细攻略

    Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介+数据增强(将已有MNIST数据集通过移动像素上下左右的方法来扩大数据集为初始数据集的5倍) 目录 MNIST ...

  3. Dataset之MNIST:MNIST(手写数字图片识别及其ubyte.gz文件)数据集简介、下载、使用方法(包括数据增强)之详细攻略

    Dataset之MNIST:MNIST(手写数字图片识别及其ubyte.gz文件)数据集简介.下载.使用方法(包括数据增强,将已有MNIST数据集通过移动像素上下左右的方法来扩大数据集为初始数据集的5 ...

  4. 下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)

    下载MNIST数据集并使用python将数据转换成NumPy数组 首先来分析init_mnist函数 接下来继续分析load_mnist函数 实现数据集转换的python脚本的代码 显示MNIST图像 ...

  5. 机器学习实战3-sklearn使用下载MNIST数据集进行分类项目

    目录 1.MNIST数据集 2.训练一个二元分类器 2.1.随机梯度下降(SGD)分类器 2.2.分类器的性能考核: 2.2.1.混淆矩阵 2.2.2.精度:(我的理解:预测集内,预测正确的比率) 2 ...

  6. 机器学习之sklearn使用下载MNIST数据集进行分类识别

    机器学习之sklearn使用下载MNIST数据集进行分类识别 一.MNIST数据集 1.MNIST数据集简介 2.获取MNIST数据集 二.训练一个二分类器 1.随机梯度下降(SGD)分类器 2.分类 ...

  7. 如何利用自定义函数把阳历转换成阴历

    数据库保存的是阳历日期,有时候会遇到把阳历换成阴历的需求,例如下图把阳历转换成阴历. 这个问题是我在开发报表过程中遇到的一个小需求,利用的工具是FineReport8.0版本,解决思路是首先定义一个可 ...

  8. 帆软日期格式转换_自定义函数把阳历转换成阴历

    3.1 阳历转阴历的类 FineReport 提供一个现成的农历日历工具类 SolarToLunar,该类中通过 today(int year, int month, int day)方法可将输入的年 ...

  9. 如何利用自定义函数把阳历转换成阴历 1

    数据库保存的是阳历日期,有时候会遇到把阳历换成阴历的需求,例如下图把阳历转换成阴历. 这个问题是我在开发报表过程中遇到的一个小需求,利用的工具是FineReport8.0版本,解决思路是首先定义一个可 ...

最新文章

  1. 【Codeforces Round #767 (Div. 2)】 C. Meximum Array 题解
  2. 前端技术分享:一个超级好用的CSS样式表
  3. 嵩天-Python语言程序设计程序题--第三周:基本数据类型
  4. Vue+element 解决浏览器自动填充记住的账号密码问题
  5. 迎亚运 广州推出全国首个地铁导向地图
  6. TCP粘包产生的原因、解决办法
  7. png转jpg java_怎么把图片PNG格式转换成JPG格式?
  8. 将 hexo 部署到云服务器
  9. 自定义表单控件(我是一个粉刷匠)
  10. Oracle Comment添加表备注和列备注添加和查询comment on table or culumn
  11. linux---常用命令(二)
  12. 无人值守地磅称重系统方案的设计原理
  13. cacti nagios nginx squid等怎么读?
  14. 【V2ray 报错 failed to read response header】
  15. android获取后一天日期,android获取本周本月本年的第一天和最后一天
  16. mycat - 解开它神秘的面纱
  17. 影视金曲-爱你一生嫌未够_昆仑奴插曲》
  18. python线程和进程
  19. win10系统磁盘清理,临时文件删不掉 的解决方案
  20. 6.xftp需要强制升级

热门文章

  1. mysql if exists 数据表_使用IF NOT EXISTS创建数据表
  2. python自动抢红包软件_快过年啦,还怕手速慢,我用Python自动抢红包!
  3. 服务端统一时间戳 boost::date_time UTC
  4. objective c 语法
  5. Atom编写Markdown
  6. 生态聚伙伴 方案联价值 华为首次发布企业业务解决方案伙伴计划
  7. 使用DocFX生成文档
  8. 安装zabbix4.0+grafana
  9. 解决windows10 wireshark无法抓取发出去的包只能抓取接受数据包
  10. 我司用了 6 年的 Redis 分布式限流器,很牛逼了!