版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一.进行数据预处理1导入相关库fromkeras.datasetsimportmnist从keras的datasets中导入mnist数据集fromkeras.utilsimportnp_utils从keras导入将整型标签转换方法utilsimportnumpyasnp导入Python扩充程序库numPy,作为np调用。numPy支持大量的维度数组与矩阵运算,也针对数组运算提供大量的数学函数库。np.random.seed(10)设置随机数种子为10。将随机数发生器初始化为恒定值,以获得可重复结果。2读取MNIST数据(X_train,y_train),(X_test,y_test)=mni
2、st.load_data()返回手写图片的两个tuple,第一个tuple存储已经人工分类好的图片及标签,标签指出该图片表示的数字(09),供训练使用;第二个tuple存储未分类的图片,在用第一个tuple训练完后,可以对第二个tuple利用神经网络进行分类,根据实验结果的真实值与预测值对比得到相应的损失值,再利用反向传播进行参数更新,再进行分类,然后重复前述步骤直至损失值最小。元组不能修改M将futures(特征値)转换为6000 x28x28x1的四维矩阵kQ:i_TriiD41i_TraijLreshape(i_TTiiiLshape0*爲20.astjpeffloa+321)翎酣i特祗
3、殖特摆为瞬i.Testfejisstn曲邂(xjest.曲邨g28,鳳1)*astjpe(float32)4、将futures(特征值)规范化K_Train4D_normallize=x_Train4D/25S将圏像特征值规范化输入从D-255娈到0,可提高模型顼测准确度.且更快收敛X_esr4f“rTialize=14箱)14435ax_poolinj2d_2(MaxPooliosJ(None,7,7,36)0dxopoutl(Dropout)(None,7r7,3&j0flattan_l(Flatten)(Nonjftj1754)0dens8_l(Den)(Hotne.128)225920
4、dropoui_2(Dropout)(None,128)0dtnsfi_2(Piue)(NnejIQ)12WLayer(typs)OutputShape#Totalparams:242,062Trainableparans:242T062Non-tiainableparanz:0胡只詁池化层1卷积层2与池化层2层层层坦藏出wB嗡None进行训练建立好模型后,就可利用反向传播算法进行训练。1.定义训练方式训练前,要用compile方法设置训练模型:pile(loss=categorical_crossentropy,optimizer=adam,metrics=accuracy)Compile方
5、法定义了三个参数:loss、adam、metrics。loss:指定损失函数,在多分类任务中指定交叉熵为损失函数。Optimizer:指定优化方法,可选adam方法,使训练更快收敛,提高准确率。Metrics:模型观测参数(指标列表)。包含评估模型训练和测试性能的指标,典型用法是metrics二accuracy。指标可是一个预定义指标的名字,也可是一个用户定制的函数。指标函数应返回单个张量,或一完成metric_name-metric_value映射的字典。metrics是为了直观地了解算法的效果,充当view的作用,并不参与到优化过程。开始训练train_history=model.fit(
6、x=x_Train4D_normalize,y=y_TrainOneHot,validation_split=0.2,epochs=10,batch_size=300,verbose=2)使用model.fit进行训练。前两个参数传入训练样本和它们的标记。训练过程存储在train_history变量中,需输入以下参数:(1)输入训练数据参数x=x_Train4D_normalize(features,数字图像的特征值)y=y_TrainOneHot(label,数字图像的真实值)(2)设置训练与验证数据比例validation_split=0.280%做训练数据,20%做验证数据。(3)设置e
7、pochs(训练周期)次数与每一批次项数epochs=10:表示执行10个训练周期;batch_size表示每次训练的batch大小。batch_size=300:表示每一批次训练300项数据。(4)设置显示训练过程verbose=2显示训练过程(日志显示),=0为不在标准输出流输出日志信息,1为输出进度条记录,=2意为每个epoch输出一行记录。以上代码执行10次训练周期,每一次训练实现以下功能:使用48000项训练数据进行训练,每一批次300项,大约分为160个批次(48000/300=160进行训练。训练完成后,计算此训练周期的准确率与误差,并在train_history中新增一项数据记
8、录。训练执行结果如下:Epoch17/2059s-loss:0.0275-acc:0.9915-val_loss:0.0296-val_acc:0.9910Epoch18/2058s-loss:0.0266-acc:0.9917-val_loss:0.0273-val_acc:0.9922Epoch19/2058s-loss:0.0266-acc:0.9913-val_loss:0.0283-val_acc:0.9924Epoch20/2058s-loss:0.0232-acc:0.9924-val_loss:0.0270-val_acc:0.9930Acc训练准确率变化以蓝色表出,VaLAc
9、c验证的准确率变化以黄色表出。可以发现,无论训练还是验证,准确率越来越高。5.画出误差show_train_history(train_history,loss,val_loss)50c8405nJ-r-5.0oh100C印512.O15.517.评估模型准确率scores=model.evaluate(x_Test4D_normalize,y_TestOneHot)scores1用model.evaluate评估模型准确率,结果存储在scores中。x_Test4D_normalize测试数据的特征(已标准化测试数据的数字图像)y_TestOneHot测试数据的真实值(Label)结果:准确
10、率0.989进行预测执行预测prediction=model.predict_classes(x_Test4D_normalize)查看预测结果prediction:10查看前10项数据,输出为:qrray(7,2,10,4,1,4,9,5,9)plot_images_labels_prediction(x_Test,y_Test,prediction,idx=0)显示前10项预测结果显示混淆矩阵In28:importpandasaspdpd.crosstab(y_Test,prediction,rownames=label,colnames=predict)图8-17运用混淆矩阵查看预测正确
11、的和错误的分别对应哪些数字使用pd.crosstab建立混淆矩阵。设置行的名称是Lable,列的名称是predict。NumPy(NumericPython)是一个Python包。是一个由多维数组对象和用于处理数组的例程集合组成的库。NumPy通常与SciPy(ScientificPython)和Matplotlib(绘图库)一起使用。Python作为MatLab的替代方案,现在被视为一种更加现代和完整的编程语言。NumPy是开源的,这是它的一个额外的优势。数组的形状shape是一个由整数构成的元组,描述数组不同维度上的大小。例如利用numpy库生成两个数组:a和b;ashape显示结果(6,
12、)表示a是一维组,长度为6;b.shape显示(2,6)表示b是二维数组,形状为2*6;即2维,每维6个元素。在python内建对象中,数组有三种形式:list列表:1,2,3Tuple兀组:(1,2,3,4,5)Diet字典:A:1,B:2其中,兀组与列表相似,不同之处在于兀组的兀素不能修改。而字典由键和值构成。python标准类针对数组的处理局限于1维,并仅提供少量的功能。Matplotlib绘图工具库。softmax函数softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!假设我们有一个数组,V,Vi表示V中的第i个元素,那么
13、这个元素的softmax值就是更形象的如下图表示:Probability:Softmaxlayerastheoutputlayer1ohVi=工Softmax.Layer2,J_0,05t彳工2*yr原来神经网络输出是3,1,-3,通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),可以将它理解成概率,最后选取输出结点的时候,可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!占位符先占住一个固定的位置,等着你再往里面添加内容的符号,广泛用于计算机中各类文档的编辑#placeholder用于创建占位,当需要时再将数据传入进去,第一个参数是数
14、据类型#第二个参数是数据的维数。input1=tf.placeholder(tf.float32,1,2)input2=tf.placeholder(tf.float32,1,2)定义一个placeholder,用于保存相应的数据。placeholder(dtype,shape=None,name=None)dtype:表示需要存放的数据的类型,一般可以使用tf.float32shape:表示需要存放的数据的大小结构,可理解为是一个多维数组,默认为None,可以不指定,根据实际需要,大小会自动调整。name:名称,默认为None在这里只是定义了这个placeholder的结构,并没有对其进行赋
15、值(feed)操作。x=tf.placeholder(dtype=tf.float32,shape=1,2,name=input)在TensorFlow中,数据不是以整数,浮点数或者字符串形式存在的,而是被封装在一个叫做tensor的对象中。Tensor是张量的意思,张量包含了0到任意维度的量,其中,0维的叫做常数,1维的叫做向量,二维叫做矩阵,多维度的就直接叫张量量。在hello_constant=tf.constant(HelloWorld!)代码中,hello_constant是一个0维度的字符串tensor,tensors还有很多不同大小:过拟合机器学习的主要挑战在于在未见过的数据输入
16、上表现良好,这就是泛化(generalization)能力。机器学习的两个大挑战:欠拟合(underfitting)和过拟合(overfitting)o欠拟合:模型的训练误差过大,过拟合:训练误差与测试误差的差距过大。欠拟合:根本原因是特征维度过少,模型过于简单,导致拟合的函数无法满足训练集,误差较大;解决方法:增加特征维度,增加训练数据;过拟合:根本原因是特征维度过多,模型假设过于复杂,参数过多,训练数据过少,噪声过多,导致拟合的函数完美的预测训练集,但对新数据的测试集预测结果差。过度的拟合了训练数据,而没有考虑到泛化能力。解决方法:(1)减少特征维度;(2)正则化,降低参数值。卷积神经网络
17、减小过拟合方法防止过拟合的方法有三类:(1)人为增加数据集;(2)正则化;(3)Dropout。人为增加数据集在原有在训练图像识别的深度神经网络时,使用更多的图像数据集训练的模型会使训练的网络具有更好地泛化性能,减小过拟合。增加图像数据集的方法是对原始图片进行旋转、镜像。正则化:有两种方法:L1正则化和L2正则化。1、L1正则化:在原有代价函数基础上加一项:假设原始代价函数是co,则代价函数公式变成:梯度公式变成:&C血Kj、在优化时使weight变得sparse,最后只使用输入重要部分的sparse子集,对噪声具有不变性。即产生一个sparse模型,可以用于特征选择。当一个特定的权重绝对值|
18、w|很大时,L1规范化权重缩小比L2要小;当一个特定的权重绝对值|w|很小时,L1规范化权重缩小量比L2要大。最终的结果就是:L1规范化趋向于将网络的权重在相对少量的高重要度连接上,而其他权值就会向0接近。L2正则化使权值更加分散,更加小,尽量使用所有的输入(权值和所有输入相乘)而不是只用到一部分输入,模型rubost更强。可以防止模型过拟合。如果参数分散不均匀,有的参数很大有的很小会使得几个输入特征就严重影响结果,几个特征占据了主要部分。比如,线性回归中,如果参数有的参数很大,只要数据偏移一点点,就会对结果很大影响。原理:小的权重在某种程度上,意味着更低复杂性,也就对数据给出了一种更简单却更强大的解释。更小的权重意味着网络的行为不会因为我们的随便改变一个输入而改变太大。这会让规范化的网络学习局部噪声的影响更加困难。对比看,大的权重的网络困难会因为输入的微小改变而产生比较大的行为改变。所以一个无规范化的网络可以使用大的权重来学习包含训练数据中的噪声的大量信息的复杂模型。简言之,规范化网络受限于根据训练数据中常见的模式来构造相对简单的模型,而能够抵抗训练数据中的噪声的特性影响。Dropout这是一种
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业电子商务理念
- 八年级英语下学期期中复习(一)
- 会计造假的商业伦理与会计职业道德分析
- 仪器设备技术指标表达成要求设备参数信息表
- 2026届湖北省宜昌市五峰县中考语文猜题卷含解析
- 《道路工程识图与绘图》教学大纲
- 2026 学龄前自闭症入门感统课件
- 鉴赏《日出·印象》
- 《中药学(第2版)》课件16 止血药
- 大棚承包合同
- 经典酒店设计案例分析
- (2026春新版)北师大版二年级数学下册全册教学设计
- 2026年高中历史学业水平考试知识点归纳总结(复习必背)
- 家政培训婴幼儿早教课件
- 22G101 混凝土结构施工图 平面整体表示方法制图规则和构造详图(现浇混凝土框架、剪力墙、梁、板)
- 网络查控申请书(模板)
- 2026年高考作文备考训练之题目解析及范文:人们常说凡事要“尽我所能”也要“敬我不能”
- 七年级数学下册知识点(人教版)
- 九江市机械技工学校教师招聘考试题库及答案解析
- P-III曲线水文频率计算电子表格程序
- 小学语文课程整体教学规划
评论
0/150
提交评论