《深度学习入门》3.6手写数字识别代码分析

本文详细分析了读取MNIST数据的代码,包括使用`os`和`sys`模块,以及如何通过`sys.path.append()`添加搜索路径。接着介绍了将Numpy数组转换为PIL图像的过程,并展示了如何重塑图像形状。最后,概述了实现神经网络推理处理的代码块。
摘要由CSDN通过智能技术生成

 

代码块1:读入MNIST数据

p70duruMNIST.py:

import sys, os
sys.path.append(os.pardir) # 为了导入父目录中的文件而进行的设定
from dataset.mnist import load_mnist
(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True,
normalize=False)
print(x_train.shape)
print(t_train.shape) 
print(x_test.shape) 
print(t_test.shape)

分析:

import sys, os

导入os模块与sys模块
os模块:提供系统级别的操作
sys模块:提供解释器相关的操作
参考:https://blog.csdn.net/qq_42874945/article/details/81911931
==================================================

sys.path.append(os.pardir)

为了导入父目录中的文件而进行的设定。

参考:https://www.ituring.com.cn/book/tupubarticle/21862

用来读入 MNIST 图像的文件在本书提供的源代码的 dataset 目录下。并且,我们假定了这个 MNIST 数据集只能从 ch01ch02ch03、…、ch08 目录中使用,因此,使用时需要从父目录(dataset 目录)中导入文件,为此需要添加 sys.path.append(os.pardir) 语句。

观察本书源代码可知,上述代码在 mnist_show.py 文件中。mnist_show.py 文件的当前目录是 ch03,但包含 load_mnist()函数的 mnist.py 文件在 dataset 目录下。因此,mnist_show.py 文件不能跨目录直接导入 mnist.py 文件。sys.path.append(os.pardir) 语句实际上是把父目录 deep-learning-from-scratch 加入到 sys.path(Python 的搜索模块的路径集)中,从而可以导入 deep-learning-from-scratch 下的任何目录(包括 dataset 目录)中的任何文件。——译者注

已知sys.path返回的是一个列表

python列表(参考:https://www.runoob.com/python/python-lists.html):

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

序列都可以进行的操作包括索引,切片,加,乘,检查成员。

此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list1 = ['physics', 'chemistry', 1997, 2000]

list2 = [1, 2, 3, 4, 5 ]

list3 = ["a", "b", "c", "d"]

与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。

 本机中测试sys.path的测试结果如下:

import sys
print(sys.path)

#运行结果
['F:\\学习代码\\深度学习\\深度
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值