scrapy库,Python-pillow库显示MNIST图片的方法

 2023-09-22 阅读 16 评论 0

摘要:文章目录写在前面示例代码另一种办法小结参考 写在前面 之前一直在看MLP的手写数字识别问题,看的书是迈克尔尼尔森的深度学习入门书《神经网络与深度学习》(《Neural networks and deep learning》,老师推荐的,讲得很不错,数学不多࿰

文章目录

  • 写在前面
  • 示例代码
  • 另一种办法
  • 小结
  • 参考

写在前面

之前一直在看MLP的手写数字识别问题,看的书是迈克尔·尼尔森的深度学习入门书《神经网络与深度学习》(《Neural networks and deep learning》,老师推荐的,讲得很不错,数学不多,适合入门),目前中文版已在Github开源(网址在这里),有兴趣的朋友可以去学习。

本文讲一下如何用Python的图片处理库pillow(PIL)显示MNIST(手写数字数据集)里面的图片(否则训练半天模型都对这个数据集没个直观的理解)。。

数据(mnist.pkl.gz文件)的下载地址在这里,网不好的朋友可以移步CSDN链接。

示例代码

# 导入解压及数据读取库(系统自带)
import gzip, pickle
# 导入图形处理库
from PIL import Image
# 导入矩阵处理库
import numpy as np
# pyplot用于显示图形
# (如果使用Image内置的`.show()`方法会使用系统默认的图形查看器打开,速度较慢)
import matplotlib.pyplot as plt# 首先进行解压,以字节形式读取
f = gzip.open('mnist.pkl.gz', 'rb')
# 读取pkl文件(Python特有的的数据形式)
# 需要设定编码,否则会报错
# 数据集中有三个部分,分别是训练集、验证集和测试集,本示例程序以a,b,c代替
a,b,c = pickle.load(f, encoding='latin1')
f.close()# 选择打开第几(n)个图片
n=1
# 根据索引选择图片,并改变形状(图片的原始形状为784*1)
arr = a[0][n].reshape(28,28)
# 使用Image的`.fromarray()`方法读入图片矩阵
# 注意这里图片的灰度值是以0-1之间的float32类型存储的,需要先转换成RGB数值(0-255)
# 再对已读入的图片进行转换(否则会显示为彩色)
img = Image.fromarray(np.uint8(arr*255)).convert("1")
# 使用`pyplot`的函数显示图像
plt.imshow(img)
plt.show()
# print(img.mode)
print("图片上的数字是:%s"%(a[1][n]))

scrapy库、运行结果:

1

图片上的数字是:0

另一种办法

import gzip
import pickle
import pylab# 以二进制只读格式读取图片及索引文件
with gzip.open('data/mnist.pkl.gz', 'rb') as f:# f.seek(0)img = pickle.load(f, encoding='latin1')i = 0
j = 10
# 输出第j张图片
# i={0,1,2},i=0时为50000个数据的训练集
# i=1时为10000个数据的验证集
# i=2时为10000个数据的测试集
img_x = img[i][0][j].reshape(28, 28)
img_id = img[i][1][j]print(img_id)
pylab.imshow(img_x)
pylab.gray()
pylab.show()

这种方法使用了matplotlib库的pylab模块,比上一种方法更加简洁。

小结

  1. PIL.Image所需的数据是 uinit8 型的,范围是0-255,所以在读取MNIST数据的时候需要进行转换;

  2. 需要知道PIL导入图片时候有以下几种格式,本例中的图片对应模式"1",可以通过img.mode来查看图片对应的模式,具体可以参看1 .

    模式
    1             1位像素,黑和白,存成8位的像素
    L             8位像素,黑白
    P             8位像素,使用调色板映射到任何其他模式
    RGB           3×8位像素,真彩
    RGBA          4×8位像素,真彩+透明通道
    CMYK          4×8位像素,颜色隔离
    YCbCr         3×8位像素,彩色视频格式
    I             32位整型像素
    F             32位浮点型像素
    

参考


  1. python PIL 图像处理; ↩︎

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/86586.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息