keras,FCN,mnist手写数字识别,实例,添加隐藏层,添加正则化L2,防止过拟合

本文介绍了如何使用Keras进行MNIST手写数字识别,并通过添加L2正则化防止过拟合。训练过程展示了随着训练的进行,模型准确率逐步提升,验证了L2正则化的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则化(Regularization)

L1和L2正则都是比较常见和常用的正则化项,都可以达到防止过拟合的效果。L1正则化的解具有稀疏性,可用于特征选择。L2正则化的解都比较小,抗扰动能力强。在求解过程中,L2通常倾向让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。参数足够小,数据偏移得多一点也不会对结果造成什么影响,可以说“抗扰动能力强”。

 

import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
from keras.regularizers import l2#导入正则化函数L2

#载入数据
(x_train,y_train),(x_test,y_test)=mnist.load_data()
#(60000,28,28)
print('x_shape:',x_train.shape)
#(60000)
print('y_shape:',y_train.shape)

#(60000,28,28)->(60000,784)
x_train=x_train.reshape(x_train.shape[0],-1)/255.0 #除以255是归一化
x_test=x_test.reshape(x_test.shape[0],-1)/255.0
#换one_hot 格式,把像素点转变成0、1形式
y_train=np_utils.to_categorical(y_train,num_classes=10)#把y_train分成10个类别
y_test=np_utils.to_categorical(y_test,num_classes=10)

#创建模型,加入隐藏层,设置权值正则化L2,其实偏置值和激活值也可以设置正则化
model=Sequential([Dense(units=200,input_dim=784,bias_initializer='one',activation='tanh',kernel_regularizer=l2(0.0003)),
                  Dense(units=100,input_dim=200,bias_initializer='one',activation='tanh',kernel_regularizer=l2(0.0003)),
                  Dense(units=10,input_dim=100,bias_initializer='one',activation='softmax',kernel_regularizer=l2(0.0003))])#bias_initializer='one',偏置值的初始值设为1

'''
#也可以用add()函数加隐藏层
model.add(Dense(...))
model.add(Dense(...))
'''
#定义优化器,可以用SGD优化器,也可以用Adam优化器
sgd=SGD(lr=0.2)
#adam=Adam(lr=0.001)#lr是学习率

#定义优化器,loss function,训练过程中计算准确率,二次代价函数改为categorical_crossentropy交叉熵函数
model.compile(optimizer=sgd, loss='categorical_crossentropy',metrics=['accuracy'])#这里还可以计算准确率

#训练模型,可以用fit函数
model.fit(x_train,y_train,batch_size=32,epochs=10)#从60000张图中每次拿32张来训练,60000张图训练完叫一个周期,一共训练10个周期

#评估模型,用evaluate()函数
loss,accuracy=model.evaluate(x_test,y_test)
print('\ntest loss',loss)
print('test accuracy',accuracy)

loss,accuracy=model.evaluate(x_train,y_train)
print('\ntrain loss',loss)
print('train accuracy',accuracy)



结果:

   32/60000 [..............................] - ETA: 9:18 - loss: 2.6104 - acc: 0.2188
  640/60000 [..............................] - ETA: 32s - loss: 2.7386 - acc: 0.2250 
 1216/60000 [..............................] - ETA: 19s - loss: 2.1701 - acc: 0.3775
 1792/60000 [..............................] - ETA: 14s - loss: 1.7419 - acc: 0.5073
 2528/60000 [>.............................] - ETA: 11s - loss: 1.4641 - acc: 0.5894
 3296/60000 [>.............................] - ETA: 9s - loss: 1.2737 - acc: 0.6490 
 4192/60000 [=>............................] - ETA: 8s - loss: 1.1300 - acc: 0.6939
 5024/60000 [=>............................] - ETA: 7s - loss: 1.0346 - acc: 0.7245
 5888/60000 [=>............................] - ETA: 6s - loss: 0.9694 - acc: 0.7437
 6688/60000 [==>...........................] - ETA: 6s - loss: 0.9194 - acc: 0.7605
 7552/60000 [==>...........................] - ETA: 5s - loss: 0.8621 - acc: 0.7793
 8416/60000 [===>..........................] - ETA: 5s - loss: 0.8293 - acc: 0.7900
 9280/60000 [===>..........................] - ETA: 5s - loss: 0.7992 - acc: 0.7994
10080/60000 [====>.........................] - ETA: 4s - loss: 0.7717 - acc: 0.8074
10944/60000 [====>.........................] - ETA: 4s - loss: 0.7493 - acc: 0.8146
11712/60000 [====>.........................] - ETA: 4s - loss: 0.7297 - acc: 0.8206
12512/60000 [=====>........................] - ETA: 4s - loss: 0.7126 - acc: 0.8257
13376/60000 [=====>........................] - ETA: 4s - loss: 0.6964 - acc: 0.8316
14240/60000 [======>.......................] - ETA: 3s - loss: 0.6825 - acc: 0.8359
15040/60000 [======>.......................] - ETA: 3s - loss: 0.6692 - acc: 0.8400
15776/60000 [======>.......................] - ETA: 3s - loss: 0.6567 - acc: 0.8436
16416/60000 [=======>......................] - ETA: 3s - loss: 0.6507 - acc: 0.8458
17152/60000 [=======>......................] - ETA: 3s - loss: 0.6417 - acc: 0.8483
18016/60000 [========>.....................] - ETA: 3s - loss: 0.6329 - acc: 0.8515
18880/60000 [========>.....................] - ETA: 3s - loss: 0.6224 - acc: 0.8543
19776/60000 [========>.....................] - ETA: 3s - loss: 0.6117 - acc: 0.8574
20608/60000 [=========>....................] - ETA: 3s - loss: 0.6022 - acc: 0.8600
21504/60000 [=========>....................] - ETA: 3s - loss: 0.5954 - acc: 0.8621
22368/60000 [==========>...................] - ETA: 2s - loss: 0.5898 - acc: 0.8637
23264/60000 [==========>...................] - ETA: 2s - loss: 0.5830 - acc: 0.8659
24096/60000 [===========>..................] - ETA: 2s - loss: 0.5763 - acc: 0.8682
24992/60000 [===========>..................] - ETA: 2s - loss: 0.5693 - acc: 0.8706
25888/60000 [===========>..................] - ETA: 2s - loss: 0.5634 - acc: 0.8721
26816/60000 [============>.................] - ETA: 2s - loss: 0.5588 - acc: 0.8738
27584/60000 [============>.................] - ETA: 2s - loss: 0.5532 - acc: 0.8755
28480/60000 [=============>................] - ETA: 2s - loss: 0.5482 - acc: 0.8772
29344/60000 [=============>................] - ETA: 2s - loss: 0.5428 - acc: 0.8790
30240/60000 [==============>...............] - ETA: 2s - loss: 0.5377 - acc: 0.8805
31040/60000 [==============>...............] - ETA: 2s - loss: 0.5328 - acc: 0.8820
31904/60000 [==============>...............] - ETA: 2s - loss: 0.5292 - acc: 0.8831
32768/60000 [===============>..............] - ETA: 1s - loss: 0.5242 - acc: 0.8847
33536/60000 [===============>..............] - ETA: 1s - loss: 0.5211 - acc: 0.8855
34336/60000 [================>.............] - ETA: 1s - loss: 0.5167 - acc: 0.8868
35232/60000 [================>.............] - ETA: 1s - loss: 0.5128 - acc: 0.8881
36032/60000 [=================>............] - ETA: 1s - loss: 0.5091 - acc: 0.8892
36928/60000 [=================>............] - ETA: 1s - loss: 0.5053 - acc: 0.8904
37760/60000 [=================>............] - ETA: 1s - loss: 0.5024 - acc: 0.8912
38624/60000 [==================>...........] - ETA: 1s - loss: 0.4987 - acc: 0.8924
39456/60000 [==================>...........] - ETA: 1s - loss: 0.4954 - acc: 0.8933
40384/60000 [===================>..........] - ETA: 1s - loss: 0.4916 - acc: 0.8943
41184/60000 [===================>..........] - ETA: 1s - loss: 0.4892 - acc: 0.8950
42048/60000 [====================>.........] - ETA: 1s - loss: 0.4866 - acc: 0.8958
42912/60000 [====================>.........] - ETA: 1s - loss: 0.4832 - acc: 0.8970
43808/60000 [====================>.........] - ETA: 1s - loss: 0.4800 - acc: 0.8981
44672/60000 [=====================>........] - ETA: 1s - loss: 0.4776 - acc: 0.8988
45504/60000 [=====================>........] - ETA: 0s - loss: 0.4751 - acc: 0.8995
46400/60000 [======================>.......] - ETA: 0s - loss: 0.4723 - acc: 0.9005
47264/60000 [======================>.......] - ETA: 0s - loss: 0.4696 - acc: 0.9013
48128/60000 [=======================>......] - ETA: 0s - loss: 0.4670 - acc: 0.9020
48960/60000 [=======================>......] - ETA: 0s - loss: 0.4649 - acc: 0.9027
49824/60000 [=======================>......] - ETA: 0s - loss: 0.4626 - acc: 0.9033
50624/60000 [========================>.....] - ETA: 0s - loss: 0.4599 - acc: 0.9041
51488/60000 [========================>.....] - ETA: 0s - loss: 0.4567 - acc: 0.9050
52096/60000 [=========================>....] - ETA: 0s - loss: 0.4552 - acc: 0.9055
53024/60000 [=========================>....] - ETA: 0s - loss: 0.4523 - acc: 0.9064
53856/60000 [=========================>....] - ETA: 0s - loss: 0.4506 - acc: 0.9070
54752/60000 [==========================>...] - ETA: 0s - loss: 0.4480 - acc: 0.9077
55552/60000 [==========================>...] - ETA: 0s - loss: 0.4465 - acc: 0.9082
56448/60000 [===========================>..] - ETA: 0s - loss: 0.4445 - acc: 0.9087
57312/60000 [===========================>..] - ETA: 0s - loss: 0.4419 - acc: 0.9095
58208/60000 [============================>.] - ETA: 0s - loss: 0.4401 - acc: 0.9100
59008/60000 [============================>.] - ETA: 0s - loss: 0.4382 - acc: 0.9106
59744/60000 [============================>.] - ETA: 0s - loss: 0.4368 - acc: 0.9109
60000/60000 [==============================] - 4s 67us/step - loss: 0.4365 - acc: 0.9110
Epoch 2/10

   32/60000 [..............................] - ETA: 11s - loss: 0.1871 - acc: 1.0000
  736/60000 [..............................] - ETA: 4s - loss: 0.2948 - acc: 0.9524 
 1472/60000 [..............................] - ETA: 4s - loss: 0.2770 - acc: 0.9579
 2144/60000 [>.............................] - ETA: 4s - loss: 0.2707 - acc: 0.9580
 2816/60000 [>.............................] - ETA: 4s - loss: 0.2693 - acc: 0.9606
 3520/60000 [>.............................] - ETA: 4s - loss: 0.2735 - acc: 0.9588
 4288/60000 [=>............................] - ETA: 4s - loss: 0.2776 - acc: 0.9571
 4928/60000 [=>............................] - ETA: 4s - loss: 0.2794 - acc: 0.9576
 5568/60000 [=>............................] - ETA: 4s - loss: 0.2818 - acc: 0.9560
 6240/60000 [==>...........................] - ETA: 4s - loss: 0.2814 - acc: 0.9564
 6976/60000 [==>...........................] - ETA: 4s - loss: 0.2828 - acc: 0.9564
 7712/60000 [==>...........................] - ETA: 3s - loss: 0.2819 - acc: 0.9572
 8480/60000 [===>..........................] - ETA: 3s - loss: 0.2805 - acc: 0.9572
 9216/60000 [===>..........................] - ETA: 3s - loss: 0.2799 - acc: 0.9569
 9984/60000 [===>..........................] - ETA: 3s - loss: 0.2790 - acc: 0.9573
10688/60000 [====>.........................] - ETA: 3s - loss: 0.2781 - acc: 0.9576
11456/60000 [====>.........................] - ETA: 3s - loss: 0.2778 - acc: 0.9578
12160/60000 [=====>........................] - ETA: 3s - loss: 0.2793 - acc: 0.9577
12960/60000 [=====>........................] - ETA: 3s - loss: 0.2806 - acc: 0.9575
13696/60000 [=====>........................] - ETA: 3s - loss: 0.2794 - acc: 0.9579
14464/60000 [======>.......................] - ETA: 3s - loss: 0.2789 - acc: 0.9579
15232/60000 [======>.......................] - ETA: 3s - loss: 0.2797 - acc: 0.9576
15968/60000 [======>.......................] - ETA: 3s - loss: 0.2786 - acc: 0.9578
16672/60000 [=======>......................] - ETA: 3s - loss: 0.2780 - acc: 0.9578
17440/60000 [=======>......................] - ETA: 3s - loss: 0.2769 - acc: 0.9583
18208/60000 [========>.....................] - ETA: 2s - loss: 0.2763 - acc: 0.9583
19008/60000 [========>.....................] - ETA: 2s - loss: 0.2773 - acc: 0.9578
19520/60000 [========>.....................] - ETA: 2s - loss: 0.2771 - acc: 0.9578
20128/60000 [=========>....................] - ETA: 2s - loss: 0.2786 - acc: 0.9574
20832/60000 [=========>....................] - ETA: 2s - loss: 0.2784 - acc: 0.9575
21632/60000 [=========>....................] - ETA: 2s - loss: 0.2780 - acc: 0.9577
22432/60000 [==========>...................] - ETA: 2s - loss: 0.2772 - acc: 0.9578
23264/60000 [==========>...................] - ETA: 2s - loss: 0.2767 - acc: 0.9580
24000/60000 [===========>..................] - ETA: 2s - loss: 0.2766 - acc: 0.9577
24608/60000 [===========>..................] - ETA: 2s - loss: 0.2761 - acc: 0.9579
25056/60000 [===========>..................] - ETA: 2s - loss: 0.2759 - acc: 0.9580
25408/60000 [===========>..................] - ETA: 2s - loss: 0.2755 - acc: 0.9580
25856/60000 [===========>..................] - ETA: 2s - loss: 0.2754 - acc: 0.9579
26368/60000 [============>.................] - ETA: 2s - loss: 0.2751 - acc: 0.9581
26976/60000 [============>.................] - ETA: 2s - loss: 0.2752 - acc: 0.9580
27712/60000 [============>.................] - ETA: 2s - loss: 0.2742 - acc: 0.9582
28352/60000 [=============>................] - ETA: 2s - loss: 0.2735 - acc: 0.9585
29120/60000 [=============>................] - ETA: 2s - loss: 0.2738 - acc: 0.9582
29856/60000 [=============>................] - ETA: 2s - loss: 0.2735 - acc: 0.9583
30560/60000 [==============>...............] - ETA: 2s - loss: 0.2731 - acc: 0.9584
31360/60000 [==============>...............] - ETA: 2s - loss: 0.2733 - acc: 0.9583
32096/60000 [===============>..............] - ETA: 2s - loss: 0.2735 - acc: 0.9583
32928/60000 [===============>..............] - ETA: 2s - loss: 0.2730 - acc: 0.9582
33568/60000 [===============>..............] - ETA: 1s - loss: 0.2728 - acc: 0.9581
34048/60000 [================>.............] - ETA: 1s - loss: 0.2724 - acc: 0.9582
34464/60000 [================>.............] - ETA: 1s - loss: 0.2720 - acc: 0.9584
35104/60000 [================>.............] - ETA: 1s - loss: 0.2715 - acc: 0.9586
35872/60000 [================>.............] - ETA: 1s - loss: 0.2720 - acc: 0.9584
36128/60000 [=================>............] - ETA: 1s - loss: 0.2720 - acc: 0.9585
36512/60000 [=================>............] - ETA: 1s - loss: 0.2717 - acc: 0.9586
36992/60000 [=================>............] - ETA: 1s - loss: 0.2711 - acc: 0.9587
37536/60000 [=================>............] - ETA: 1s - loss: 0.2711 - acc: 0.9587
38048/60000 [==================>...........] - ETA: 1s - loss: 0.2710 - acc: 0.9587
38464/60000 [==================>...........] - ETA: 1s - loss: 0.2708 - acc: 0.9587
38944/60000 [==================>...........] - ETA: 1s - loss: 0.2708 - acc: 0.9587
39424/60000 [==================>...........] - ETA: 1s - loss: 0.2703 - acc: 0.9590
40096/60000 [===================>..........] - ETA: 1s - loss: 0.2704 - acc: 0.9588
40800/60000 [===================>..........] - ETA: 1s - loss: 0.2694 - acc: 0.9591
41536/60000 [===================>..........] - ETA: 1s - loss: 0.2692 - acc: 0.9591
42336/60000 [====================>.........] - ETA: 1s - loss: 0.2691 - acc: 0.9590
43168/60000 [====================>.........] - ETA: 1s - loss: 0.2687 - acc: 0.9593
43808/60000 [====================>.........] - ETA: 1s - loss: 0.2683 - acc: 0.9592
44288/60000 [=====================>........] - ETA: 1s - loss: 0.2685 - acc: 0.9592
44640/60000 [=====================>........] - ETA: 1s - loss: 0.2685 - acc: 0.9593
44928/60000 [=====================>........] - ETA: 1s - loss: 0.2681 - acc: 0.9594
45248/60000 [=====================>........] - ETA: 1s - loss: 0.2680 - acc: 0.9594
45792/60000 [=====================>........] - ETA: 1s - loss: 0.2678 - acc: 0.9594
46528/60000 [======================>.......] - ETA: 1s - loss: 0.2684 - acc: 0.9591
47168/60000 [======================>.......] - ETA: 1s - loss: 0.2685 - acc: 0.9591
47872/60000 [======================>.......] - ETA: 0s - loss: 0.2680 - acc: 0.9592
48576/60000 [=======================>......] - ETA: 0s - loss: 0.2681 - acc: 0.9592
49280/60000 [=======================>......] - ETA: 0s - loss: 0.2678 - acc: 0.9593
49984/60000 [=======================>......] - ETA: 0s - loss: 0.2673 - acc: 0.9594
50592/60000 [========================>.....] - ETA: 0s - loss: 0.2669 - acc: 0.9596
51296/60000 [========================>.....] - ETA: 0s - loss: 0.2665 - acc: 0.9597
52000/60000 [=========================>....] - ETA: 0s - loss: 0.2664 - acc: 0.9597
52736/60000 [=========================>....] - ETA: 0s - loss: 0.2657 - acc: 0.9599
53504/60000 [=========================>....] - ETA: 0s - loss: 0.2657 - acc: 0.9599
54240/60000 [==========================>...] - ETA: 0s - loss: 0.2651 - acc: 0.9600
54976/60000 [==========================>...] - ETA: 0s - loss: 0.2648 - acc: 0.9600
55456/60000 [==========================>...] - ETA: 0s - loss: 0.2644 - acc: 0.9601
55936/60000 [==========================>...] - ETA: 0s - loss: 0.2642 - acc: 0.9602
56384/60000 [===========================>..] - ETA: 0s - loss: 0.2641 - acc: 0.9602
56896/60000 [===========================>..] - ETA: 0s - loss: 0.2639 - acc: 0.9602
57472/60000 [===========================>..] - ETA: 0s - loss: 0.2635 - acc: 0.9603
58080/60000 [============================>.] - ETA: 0s - loss: 0.2631 - acc: 0.9604
58624/60000 [============================>.] - ETA: 0s - loss: 0.2627 - acc: 0.9605
59296/60000 [============================>.] - ETA: 0s - loss: 0.2623 - acc: 0.9605
59904/60000 [============================>.] - ETA: 0s - loss: 0.2621 - acc: 0.9605
60000/60000 [==============================] - 5s 81us/step - loss: 0.2622 - acc: 0.9605
Epoch 3/10

   32/60000 [..............................] - ETA: 7s - loss: 0.1551 - acc: 1.0000
  672/60000 [..............................] - ETA: 5s - loss: 0.2043 - acc: 0.9807
 1280/60000 [..............................] - ETA: 4s - loss: 0.2179 - acc: 0.9695
 1952/60000 [..............................] - ETA: 4s - loss: 0.2353 - acc: 0.9647
 2656/60000 [>.............................] - ETA: 4s - loss: 0.2343 - acc: 0.9665
 3328/60000 [>.............................] - ETA: 4s - loss: 0.2347 - acc: 0.9663
 4032/60000 [=>............................] - ETA: 4s - loss: 0.2346 - acc: 0.9663
 4672/60000 [=>............................] - ETA: 4s - loss: 0.2387 - acc: 0.9664
 5440/60000 [=>............................] - ETA: 4s - loss: 0.2358 - acc: 0.9669
 6144/60000 [==>...........................] - ETA: 4s - loss: 0.2354 - acc: 0.9665
 6880/60000 [==>...........................] -

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值