深度学习系列:从mnist数据集中提取mnist图片

最近一直在回顾深度学习的知识,打算对之前学习的知识做一个梳理,首先准备从keras提供的mnist数据集中提取出mnist图片;

mnist识别问题被认为是机器学习的“hello world”,算是一个入门级的实验,这里我用的keras是基于tensorflow 1.14.0的2.3.0版本,差别应该不大;

当然,实际中并不需要提取mnist图片,我这样做的原因是因为一般的自定义的图片分类任务都是从jpg类的原始文件开始的,所以希望实现一遍从头到尾的图片分类任务;

首先从keras提供的库中下载mnist数据集:

from keras.datasets import mnist

(x_train,y_train),(x_test,y_test) = mnist.load_data()

运行该命令可能需要等待从互联网下载mnist集,运行完该命令后,会在C盘的“用户/你的用户名/.keras/datasets”下保存文件,这样以后无论在任何位置都可以直接读取下载好的文件,而不用重新下载。

我们在当前目录下建一个train文件夹,然后在建10个子文件夹,用于保存生成的图片;

import os

if not os.path.exists("train"):
    os.makedirs("train")
for i in range(10):
    if not os.path.exists(os.path.join("train",str(i))):
        os.mkdir(os.path.join("train",str(i)))

调用opencv的imwrite函数即可保存文件;没有opencv的可以用下面命令进行安装:

pip install opencv-python
index_list = [0]*10

# x_train为图片,y_train为标签;
for i in range(x_train.shape[0]):
    file_name = os.path.join("train",str(y_train[i]),str(index_list[y_train[i]]) + '.bmp')
    index_list[y_train[i]] += 1
    cv2.imwrite(file_name,x_train[i])

运行完后会将图片保存在train文件夹内,一共60000张图像,均为28*28的灰度图;

类似的,可以处理test数据;

注意,keras的mnist模块加载的数据格式和其他深度学习框架有些不同,例如运行下面的命令:

print(x_train[0].shape)

keras的为(28,28),tensorflow的为784.当然,这些细节不必在意,无非是加入一个reshape的操作;

转换好的mnist数据集:https://pan.baidu.com/s/1Pl4YhbxaMMd-9ViKynzOkw

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值