1、深度神经网络4*3W +4b=164*4 +4=204 +1=516+20+5=41深度神经网络64161632深度神经网络32816深度神经网络321683216深度神经网络组成生物神经元神经元Y=f(x1*w1+x2*w2+x3*w3+b)作用x(输入)x为输入神经元,负责接收外界信息y(输出)Y负责接收符合标准的xw(权重)模拟轴突,是x和y的桥梁b(偏差值)决定是否符合标准,对输入掌握“生杀大权”激活函数)模拟真实神经传导,满足激活函数标准,传入下一神经元神经元参数MNIST手写字体数据集MNIST数据集是机器学习领域中非常经典的一个数据集,由60000个训练样本和10000个测试样本
2、组成,每个样本都是一张28*28像素的灰度手写数字图片。Mnist数据集下载步骤01 导入所需要的模块from keras.datasets import mnistimport cv2步骤02读取mnist数据集(x_Train,y_Train),(x_Test,y_Test)=mnist.load_data()步骤03 输出训练集、测试集的大小print(x_Train.shape)print(y_Train.shape)print(x_Test.shape)print(y_Test.shape)步骤03 利用for循环写出数据集for num in range(20):name=./pi
3、c/+str(num)+.jpg cv2.imwrite(name,x_Trainnum)步骤04 利用for循环写出标签f=open(train_label.txt,w)for num inrange(20):label=y_Trainnum f.write(str(label)f.write(n)手写字体网络设计282828*28=784手写字体网络设计手写字体训练与预测keraskeras训练步骤训练步骤训练预测训练集与测试集:训练集-用于训练模型的子集。测试集-用于测试训练后模型的子集。数据与标签Epoch迭代周期Acc准确率Loss损失数据预处理建立模型训练模型评估模型进行预测结果分
4、析导入相关模块from keras.models import Sequential from keras.layers import Densefrom keras.layers import Dropout建立Sequential模型model=Sequential()#建立模型model.add(Dense(units=256,#定义”隐藏层“神经元个数为256 input_dim=784,#定义”输入层“神经元个数为 kernel_initializer=normal,#使用normal distribution正态分布来初始化权重(weight)和偏差 activation=relu
5、)#定义激活函数为relumodel.add(Dropout(0.5)#加入Doupout功能,防止过拟合model.add(Dense(units=10,#定义”输出层“神经元个数为10 kernel_initializer=normal,activation=softmax)#激活函数为softmax定义训练方式pile(loss=categorical_crossentropy,optimizer=adam,metrics=accuracy)参数名说明loss设置损失函数,在深度学习中使用cross_entropy(交叉熵)训练的效果比较好optimizer设置训练时,在深度学习中使用a
6、dam优化器可以让训练速度更快,还可以提高准确率metrics设置评估模型的方式是准确率参数train_history=model.fit(x=X_Train_normalize,y=y_TrainOneHot,validation_split=0.2,epochs=10,batch_size=200,verbose=2)参数名说明x=X_Train_normalizex代表要输入的特征值,所以将输入特征X_Train_normalize赋值给xy=y_TrainOneHoty=y_TrainOneHoty代表要输入的标签,所以将标签值y_TrainOneHot赋给yvalidation_sp
7、lit=0.2表示要把训练数据集中的80%用于训练模型,20%用于验证模型epochs=10表示要训练10个周期batch_size=200表示每个周期中的每一批次的数据量大小是200verbose=2显示训练过程train_history训练结果会保存在train_history中训练和验证的准确率都随着epoch增加而增加,即准确率越来越高。训练准确率训练样本原来是60000的,把其中的48000作为训练集,剩下的12000作为验证集。另外,我们还注意到,loss(训练集的损失函数)和val_loss(验证集的损失函数)在逐步减小,acc(训练集的准确率)和val_acc(验证集的准确率)
8、在提升。神经网络构建神经网络构建先是用model=Sequential()创建了一个名叫model的神经网络,后面的第一行model.add都是在为这个网络添加一个层(layer)#创建神经网络结构model=Sequential()model.add(Dense(64,input_dim=20,activation=relu)model.add(Dropout(0.5)model.add(Dense(64,activation=relu)model.add(Dropout(0.5)神经网络构建神经网络构建#编译神经网络pile(loss=binary_crossentropy,optimiz
9、er=rmsprop,metrics=accuracy)#训练神经网络model.fit(x_train,y_train,epochs=20,batch_size=128)#评估神经网络score=model.evaluate(x_test,y_test,batch_size=128)项目实战通过下载通过下载mnist数据集来训练多层感知器模型。数据集来训练多层感知器模型。代码路径:/第5章/1/train_mnist.py通过自制手写字体数据集来训练多层感知器模型。通过自制手写字体数据集来训练多层感知器模型。代码路径:/第5章/1/split_all_pic.py代码路径:/第5章/1/train_mnist_my.py