文章目录
前言
本文是训练多层感知机的代码实现,具体原理及推导请看BP神经网络原理(详细推导)。
提示:以下是本篇文章正文内容,下面案例可供参考
第一步.读取数据
import os
import struct
import numpy as np
import matplotlib.pyplot as plt
def getMNIST(kind = 'train'):
#获得当前路径
path = os.getcwd()
#获得标签文件路径
labels_path = os.path.join(path,'%s-labels-idx1-ubyte' % kind)
#获得图片路径
images_path = os.path.join(path,'%s-images-idx3-ubyte' % kind)
with open(labels_path,'rb') as lbpath:
magic, n = struct.unpack('>II',
lbpath.read(8))
labels = np.fromfile(lbpath,dtype = np.uint8)
with open(images_path,'rb') as imgpath:
magic, num, rows, cols = struct.unpack('>IIII',
imgpath.read(16))
images = np.fromfile(imgpath,dtype = np.uint8).reshape(len(labels),rows*cols)
#像素归一化
images = ((images/255)-0.5)*2
return images,labels
#MNIST 数据集 : 60000,60000*784,10000,10000*784 respectly.
X_train,y_train = getMNIST(kind = 'train')
X_test,y_test = getMNIST(kind = 't10k')
第二步.搭建多层感知机
class MutiLayerNeuralNetWork(object):
def __init__(self,
l2 = 0.01,
eta = 0.001,
epochs = 10,
shuffle = True,
Random_seed = 1,
hidden_unit = 100,
minibatch_size =