资源简介
用于手写字体识别的卷积神经网络源码,python语言,包含注释
代码片段和文件信息
#coding:utf-8
import numpy as np
import os
import gzip
import urllib.request
import struct
import matplotlib.pyplot as plt
import sys
import pickle
filefolder = r‘C:\Users\子坤\Desktop\machinelearning learning‘
filename_list = (r‘\train-images-idx3-ubyte.gz‘
r‘\train-labels-idx1-ubyte.gz‘
r‘\t10k-images-idx3-ubyte.gz‘
r‘\t10k-labels-idx1-ubyte.gz‘)
file_net_name = r‘\net.pkl‘
def storeNet(filename net):
fw = open(filename‘wb‘)
pickle.dump(net fw)
fw.close()
def grabNet(filename):
fr = open(filename‘rb‘)
net = pickle.load(fr)
fr.close()
return net
def load_dataset(pathfile_train_image file_train_label file_test_image file_test_label):
“““
函数功能:读取mnist数据集,并返回4个np数组
path:手写数字数据集路径名
file_train_image:训练集image压缩包文件名
file_train_label:训练集label压缩包文件名
file_test_image:测试集image压缩包文件名
file_test_label:测试集label压缩包文件名
“““
train_imgs = load_imageset(path + file_train_image)
train_lbls = load_labelset(path + file_train_label)
test_imgs = load_imageset(path + file_test_image)
test_lbls = load_labelset(path + file_test_label)
return train_imgs train_lbls test_imgs test_lbls
def load_imageset(filename):
“““
函数功能:读取mnist数据的中的images压缩包到np数组中并返回
函数工作原理解释:该二进制文件的内容以“位”为单位,前16个字节是4个整形数组,每个数字(分别是魔数、图
片数、图片横轴像素数、图片纵轴像素数)占4个字节,接下来每个字节代表一个像素值。
filename:待读取文件绝对路径
“““
with gzip.open(filename ‘rb‘) as binfile:
buffers = binfile.read()
binfile.close()
head = struct.unpack_from(‘>IIII‘ buffers 0) # 取前4个整数,返回一个元组
offset = struct.calcsize(‘>IIII‘) # 定位到data开始的位置
imgNum width height = head[1] head[2] head[3]
bits = imgNum * width * height # data一共有60000*28*28个像素值
bitsString = ‘>‘ + str(bits) + ‘B‘ # fmt格式:‘>47040000B‘
imgs = struct.unpack_from(bitsString buffers offset) # 取data数据,返回一个元组
imgs = np.reshape(imgs [imgNum 1 width height]) # reshape为[60000784]型数组
print(imgs.shape)
return imgs
def load_labelset(filename):
“““
函数功能:读取mnist数据的中的label压缩包到np数组中并返回
函数工作原理解释:该二进制文件的内容以“位”为单位,前8个字节是2个整形数组,每个数字(分别是魔数、
laebl数)占4个字节,接下来每个字节代表一个label值。
filename:待读取文件绝对路径
“““
with gzip.open(filename ‘rb‘) as binfile:
buffers = binfile.read()
binfile.close()
head = struct.unpack_from(‘>II‘ buffers 0) # 取前2个整数,返回一个元组
offset = struct.calcsize(‘>II‘) # 定位到label数据开始的位置
lblNum = head[1] # data一共有60000个像素值
bitsString = ‘>‘ + str(lblNum) + ‘B‘ # fmt格式:‘>600000B‘
lbls = struct.unpack_from(bitsString buffers offset) # 取label数据,返回一个元组
lbls = np.reshape(lbls [lblNum]) # reshape为[60000]型列表
print(lbls.shape)
return lbls
def conv(inputdata kernel):
“““
计算两个np.adarray矩阵的卷积
“““
in_row in_column = inputdata.shape
kernel_width kernel_height = kernel.shape
re_row re_clunm = in_row - kernel_width + 1 in_column - kerne
- 上一篇:深度学习testCNN的python实现
- 下一篇:骑士周游问题源码
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论