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,Dropout
from keras.optimizers import SGD
#载入数据
(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)
#创建模型,加入隐藏层,加入Dropout
model=Sequential([Dense(units=200,input_dim=784,bias_initializer='one',activation='tanh'),
Dropout(0.4),
Dense(units=100,input_dim=200,bias_initializer='one',activation='tanh'),
Dropout(0.4),
Dense(units=10,input_dim=100,bias_initializer='one',activation='softmax')])#bias_initializer='one',偏置值的初始值设为1
'''
#也可以用add()函数加隐藏层
model.add(Dense(...))
model.add(Dense(...))
'''
#定义优化器
sgd=SGD(lr=0.2)
#定义优化器,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: 8:59 - loss: 2.9518 - acc: 0.1562
480/60000 [..............................] - ETA: 42s - loss: 2.7830 - acc: 0.1542
1184/60000 [..............................] - ETA: 19s - loss: 2.0911 - acc: 0.3252
1984/60000 [..............................] - ETA: 12s - loss: 1.6201 - acc: 0.4743
2848/60000 [>.............................] - ETA: 9s - loss: 1.3482 - acc: 0.5667
3616/60000 [>.............................] - ETA: 8s - loss: 1.2158 - acc: 0.6098
4448/60000 [=>............................] - ETA: 7s - loss: 1.1108 - acc: 0.6450
5248/60000 [=>............................] - ETA: 6s - loss: 1.0207 - acc: 0.6736
6048/60000 [==>...........................] - ETA: 6s - loss: 0.9490 - acc: 0.6964
6816/60000 [==>...........................] - ETA: 5s - loss: 0.8987 - acc: 0.7152
7616/60000 [==>...........................] - ETA: 5s - loss: 0.8628 - acc: 0.7281
8448/60000 [===>..........................] - ETA: 5s - loss: 0.8309 - acc: 0.7388
9248/60000 [===>..........................] - ETA: 4s - loss: 0.8005 - acc: 0.7484
10048/60000 [====>.........................] - ETA: 4s - loss: 0.7775 - acc: 0.7564
10912/60000 [====>.........................] - ETA: 4s - loss: 0.7524 - acc: 0.7644
11776/60000 [====>.........................] - ETA: 4s - loss: 0.7285 - acc: 0.7711
12640/60000 [=====>........................] - ETA: 4s - loss: 0.7105 - acc: 0.7767
13408/60000 [=====>........................] - ETA: 4s - loss: 0.7013 - acc: 0.7798
14144/60000 [======>.......................] - ETA: 3s - loss: 0.6903 - acc: 0.7841
14912/60000 [======>.......................] - ETA: 3s - loss: 0.6766 - acc: 0.7888
15744/60000 [======>.......................] - ETA: 3s - loss: 0.6633 - acc: 0.7933
16512/60000 [=======>......................] - ETA: 3s - loss: 0.6509 - acc: 0.7971
17312/60000 [=======>......................] - ETA: 3s - loss: 0.6402 - acc: 0.8008
18144/60000 [========>.....................] - ETA: 3s - loss: 0.6307 - acc: 0.8041
18976/60000 [========>.....................] - ETA: 3s - loss: 0.6218 - acc: 0.8067
19744/60000 [========>.....................] - ETA: 3s - loss: 0.6123 - acc: 0.8097
20576/60000 [=========>....................] - ETA: 3s - loss: 0.6060 - acc: 0.8117
21344/60000 [=========>....................] - ETA: 3s - loss: 0.6000 - acc: 0.8141
22208/60000 [==========>...................] - ETA: 2s - loss: 0.5913 - acc: 0.8169
22976/60000 [==========>...................] - ETA: 2s - loss: 0.5843 - acc: 0.8188
23808/60000 [==========>...................] - ETA: 2s - loss: 0.5789 - acc: 0.8208
24640/60000 [===========>..................] - ETA: 2s - loss: 0.5747 - acc: 0.8224
25472/60000 [===========>..................] - ETA: 2s - loss: 0.5694 - acc: 0.8239
26208/60000 [============>.................] - ETA: 2s - loss: 0.5651 - acc: 0.8250
27072/60000 [============>.................] - ETA: 2s - loss: 0.5595 - acc: 0.8265
27840/60000 [============>.................] - ETA: 2s - loss: 0.5539 - acc: 0.8282
28704/60000 [=============>................] - ETA: 2s - loss: 0.5499 - acc: 0.8298
29376/60000 [=============>................] - ETA: 2s - loss: 0.5454 - acc: 0.8311
30176/60000 [==============>...............] - ETA: 2s - loss: 0.5414 - acc: 0.8326
30976/60000 [==============>...............] - ETA: 2s - loss: 0.5380 - acc: 0.8338
31776/60000 [==============>...............] - ETA: 2s - loss: 0.5323 - acc: 0.8353
32544/60000 [===============>..............] - ETA: 2s - loss: 0.5289 - acc: 0.8364
33344/60000 [===============>..............] - ETA: 1s - loss: 0.5245 - acc: 0.8377
34176/60000 [================>.............] - ETA: 1s - loss: 0.5209 - acc: 0.8386
34976/60000 [================>.............] - ETA: 1s - loss: 0.5169 - acc: 0.8401
35712/60000 [================>.............] - ETA: 1s - loss: 0.5153 - acc: 0.8406
36544/60000 [=================>............] - ETA: 1s - loss: 0.5108 - acc: 0.8420
37312/60000 [=================>............] - ETA: 1s - loss: 0.5073 - acc: 0.8433
38112/60000 [==================>...........] - ETA: 1s - loss: 0.5048 - acc: 0.8441
38912/60000 [==================>...........] - ETA: 1s - loss: 0.5031 - acc: 0.8446
39712/60000 [==================>...........] - ETA: 1s - loss: 0.5008 - acc: 0.8453
40544/60000 [===================>..........] - ETA: 1s - loss: 0.4988 - acc: 0.8460
41312/60000 [===================>..........] - ETA: 1s - loss: 0.4956 - acc: 0.8470
42112/60000 [====================>.........] - ETA: 1s - loss: 0.4936 - acc: 0.8479
42944/60000 [====================>.........] - ETA: 1s - loss: 0.4923 - acc: 0.8486
43744/60000 [====================>.........] - ETA: 1s - loss: 0.4893 - acc: 0.8495
44544/60000 [=====================>........] - ETA: 1s - loss: 0.4863 - acc: 0.8503
45280/60000 [=====================>........] - ETA: 1s - loss: 0.4832 - acc: 0.8513
46016/60000 [======================>.......] - ETA: 0s - loss: 0.4809 - acc: 0.8521
46848/60000 [======================>.......] - ETA: 0s - loss: 0.4784 - acc: 0.8529
47584/60000 [======================>.......] - ETA: 0s - loss: 0.4759 - acc: 0.8535
48384/60000 [=======================>......] - ETA: 0s - loss: 0.4734 - acc: 0.8541
49216/60000 [=======================>......] - ETA: 0s - loss: 0.4702 - acc: 0.8550
50048/60000 [========================>.....] - ETA: 0s - loss: 0.4681 - acc: 0.8558
50816/60000 [========================>.....] - ETA: 0s - loss: 0.4664 - acc: 0.8563
51584/60000 [========================>.....] - ETA: 0s - loss: 0.4650 - acc: 0.8567
52384/60000 [=========================>....] - ETA: 0s - loss: 0.4625 - acc: 0.8573
53216/60000 [=========================>....] - ETA: 0s - loss: 0.4601 - acc: 0.8580
54080/60000 [==========================>...] - ETA: 0s - loss: 0.4582 - acc: 0.8587
54848/60000 [==========================>...] - ETA: 0s - loss: 0.4570 - acc: 0.8593
55648/60000 [==========================>...] - ETA: 0s - loss: 0.4550 - acc: 0.8600
56448/60000 [===========================>..] - ETA: 0s - loss: 0.4538 - acc: 0.8604
57280/60000 [===========================>..] - ETA: 0s - loss: 0.4518 - acc: 0.8609
57952/60000 [===========================>..] - ETA: 0s - loss: 0.4498 - acc: 0.8615
58656/60000 [============================>.] - ETA: 0s - loss: 0.4480 - acc: 0.8621
59200/60000 [============================>.] - ETA: 0s - loss: 0.4467 - acc: 0.8625
59776/60000 [============================>.] - ETA: 0s - loss: 0.4457 - acc: 0.8629
60000/60000 [==============================] - 4s 70us/step - loss: 0.4453 - acc: 0.8631
Epoch 2/10
32/60000 [..............................] - ETA: 9s - loss: 0.4432 - acc: 0.9062
672/60000 [..............................] - ETA: 5s - loss: 0.3326 - acc: 0.8973
1280/60000 [..............................] - ETA: 4s - loss: 0.3275 - acc: 0.8992
1984/60000 [..............................] - ETA: 4s - loss: 0.3029 - acc: 0.9047
2688/60000 [>.............................] - ETA: 4s - loss: 0.2984 - acc: 0.9070
3424/60000 [>.............................] - ETA: 4s - loss: 0.3075 - acc: 0.9039
4192/60000 [=>............................] - ETA: 4s - loss: 0.3044 - acc: 0.9058
4928/60000 [=>............................] - ETA: 4s - loss: 0.3045 - acc: 0.9060
5760/60000 [=>............................] - ETA: 3s - loss: 0.3037 - acc: 0.9062
6432/60000 [==>...........................] - ETA: 3s - loss: 0.3009 - acc: 0.9078
7136/60000 [==>...........................] - ETA: 3s - loss: 0.3064 - acc: 0.9079
7872/60000 [==>...........................] - ETA: 3s - loss: 0.2980 - acc: 0.9094
8672/60000 [===>..........................] - ETA: 3s - loss: 0.2955 - acc: 0.9084
9408/60000 [===>..........................] - ETA: 3s - loss: 0.2967 - acc: 0.9087
10080/60000 [====>.........................] - ETA: 3s - loss: 0.2973 - acc: 0.9090
10816/60000 [====>.........................] - ETA: 3s - loss: 0.2980 - acc: 0.9088
11616/60000 [====>.........................] - ETA: 3s - loss: 0.2988 - acc: 0.9091
12384/60000 [=====>........................] - ETA: 3s - loss: 0.3039 - acc: 0.9079
13056/60000 [=====>........................] - ETA: 3s - loss: 0.3052 - acc: 0.9078
13664/60000 [=====>........................] - ETA: 3s - loss: 0.3054 - acc: 0.9083
14240/60000 [======>.......................] - ETA: 3s - loss: 0.3094 - acc: 0.9072
14848/60000 [======>.......................] - ETA: 3s - loss: 0.3103 - acc: 0.9065
15488/60000 [======>.......................] - ETA: 3s - loss: 0.3097 - acc: 0.9069
16096/60000 [=======>......................] - ETA: 3s - loss: 0.3088 - acc: 0.9071
16768/60000 [=======>......................] - ETA: 3s - loss: 0.3062 - acc: 0.9074
17568/60000 [=======>......................] - ETA: 3s - loss: 0.3074 - acc: 0.9072
18304/60000 [========>.....................] - ETA: 3s - loss: 0.3085 - acc: 0.9072
19104/60000 [========>.....................] - ETA: 2s - loss: 0.3078 - acc: 0.9075
19872/60000 [========>.....................] - ETA: 2s - loss: 0.3074 - acc: 0.9078
20608/60000 [=========>....................] - ETA: 2s - loss: 0.3075 - acc: 0.9079
21344/60000 [=========>....................] - ETA: 2s - loss: 0.3066 - acc: 0.9079
22112/60000 [==========>...................] - ETA: 2s - loss: 0.3065 - acc: 0.9076
22944/60000 [==========>...................] - ETA: 2s - loss: 0.3044 - acc: 0.9083
23712/60000 [==========>...................] - ETA: 2s - loss: 0.3027 - acc: 0.9086
24448/60000 [===========>..................] - ETA: 2s - loss: 0.3020 - acc: 0.9087
25280/60000 [===========>..................] - ETA: 2s - loss: 0.3024 - acc: 0.9087
26144/60000 [============>.................] - ETA: 2s - loss: 0.3010 - acc: 0.9088
26944/60000 [============>.................] - ETA: 2s - loss: 0.3007 - acc: 0.9088
27680/60000 [============>.................] - ETA: 2s - loss: 0.2997 - acc: 0.9094
28448/60000 [=============>................] - ETA: 2s - loss: 0.2992 - acc: 0.9096
29312/60000 [=============>................] - ETA: 2s - loss: 0.2970 - acc: 0.9102
30048/60000 [==============>...............] - ETA: 2s - loss: 0.2957 - acc: 0.9105
30880/60000 [==============>...............] - ETA: 2s - loss: 0.2950 - acc: 0.9107
31712/60000 [==============>...............] - ETA: 1s - loss: 0.2958 - acc: 0.9108
32544/60000 [===============>..............] - ETA: 1s - loss: 0.2961 - acc: 0.9108
33312/60000 [===============>..............] - ETA: 1s - loss: 0.2961 - acc: 0.9107
34176/60000 [================>.............] - ETA: 1s - loss: 0.2961 - acc: 0.9107
35008/60000 [================>.............] - ETA: 1s - loss: 0.2954 - acc: 0.9107
35776/60000 [================>.............] - ETA: 1s - loss: 0.2962 - acc: 0.9107
36512/60000 [=================>............] - ETA: 1s - loss: 0.2962 - acc: 0.9107
37312/60000 [=================>............] - ETA: 1s - loss: 0.2959 - acc: 0.9109
38208/60000 [==================>...........] - ETA: 1s - loss: 0.2973 - acc: 0.9109
38976/60000 [==================>...........] - ETA: 1s - loss: 0.2982 - acc: 0.9105
39744/60000 [==================>...........] - ETA: 1s - loss: 0.2978 - acc: 0.9108
40576/60000 [===================>..........] - ETA: 1s - loss: 0.2978 - acc: 0.9109
41440/60000 [===================>..........] - ETA: 1s - loss: 0.2973 - acc: 0.9109
42304/60000 [====================>.........] - ETA: 1s - loss: 0.2957 - acc: 0.9114
43072/60000 [====================>.........] - ETA: 1s - loss: 0.2955 - acc: 0.9116
43808/60000 [====================>.........] - ETA: 1s - loss: 0.2946 - acc: 0.9119
44544/60000 [=====================>........] - ETA: 1s - loss: 0.2938 - acc: 0.9123
45408/60000 [=====================>........] - ETA: 0s - loss: 0.2932 - acc: 0.9126
46208/60000 [======================>.......] - ETA: 0s - loss: 0.2922 - acc: 0.9129
47008/60000 [======================>.......] - ETA: 0s - loss: 0.2921 - acc: 0.9131
47808/60000 [======================>.......] - ETA: 0s - loss: 0.2922 - acc: 0.9132
48640/60000 [=======================>......] - ETA: 0s - loss: 0.2921 - acc: 0.9135
49408/60000 [=======================>......] - ETA: 0s - loss: 0.2912 - acc: 0.9135
50240/60000 [========================>.....] - ETA: 0s - loss: 0.2904 - acc: 0.9137
51040/60000 [========================>.....] - ETA: 0s - loss: 0.2913 - acc: 0.9135
51840/60000 [========================>.....] - ETA: 0s - loss: 0.2915 - acc: 0.9135
52640/60000 [=========================>....] - ETA: 0s - loss: 0.2907 - acc: 0.9138
53504/60000 [=========================>....] - ETA: 0s - loss: 0.2901 - acc: 0.9141
54368/60000 [==========================>...] - ETA: 0s - loss: 0.2895 - acc: 0.9145
55136/60000 [==========================>...] - ETA: 0s - loss: 0.2893 - acc: 0.9146
55904/60000 [==========================>...] - ETA: 0s - loss: 0.2890 - acc: 0.9146
56704/60000 [===========================>..] - ETA: 0s - loss: 0.2889 - acc: 0.9146
57568/60000 [===========================>..] - ETA: 0s - loss: 0.2882 - acc: 0.9148
58368/60000 [============================>.] - ETA: 0s - loss: 0.2882 - acc: 0.9147
59040/60000 [============================>.] - ETA: 0s - loss: 0.2873 - acc: 0.9150
59840/60000 [============================>.] - ETA: 0s - loss: 0.2872 - acc: 0.9151
60000/60000 [==============================] - 4s 67us/step - loss: 0.2874 - acc: 0.9150
Epoch 3/10
32/60000 [..............................] - ETA: 5s - loss: 0.0614 - acc: 1.0000
832/60000 [..............................] - ETA: 3s - loss: 0.2192 - acc: 0.9255
1632/60000 [..............................] - ETA: 3s - loss: 0.2582 - acc: 0.9154
2432/60000 [>.............................] - ETA: 3s - loss: 0.2621 - acc: 0.9174
3168/60000 [>.............................] - ETA: 3s - loss: 0.2545 - acc: 0.9205
4000/60000 [=>............................] - ETA: 3s - loss: 0.2659 - acc: 0.9160
4768/60000 [=>............................] - ETA: 3s - loss: 0.2628 - acc: 0.9190
5536/60000 [=>............................] - ETA: 3s - loss: 0.2646 - acc: 0.9193
6272/60000 [==>...........................] - ETA: 3s - loss: 0.2659 - acc: 0.9195
7072/60000 [==>...........................] - ETA: 3s - loss: 0.2570 - acc: 0.9228
7904/60000 [==>...........................] - ETA: 3s - loss: 0.2529 - acc: 0.9250
8672/60000 [===>..........................] - ETA: 3s - loss: 0.2481 - acc: 0.9261
9536/60000 [===>..........................] - ETA: 3s - loss: 0.2461 - acc: 0.9259
10304/60000 [====>.........................] - ETA: 3s - loss: 0.2435 - acc: 0.9267
11168/60000 [====>.........................] - ETA: 3s - loss: 0.2418 - acc: 0.9272
11968/60000 [====>.........................] - ETA: 3s - loss: 0.2400 - acc: 0.9276
12768/60000 [=====>........................] - ETA: 3s - loss: 0.2425 - acc: 0.9268
13536/60000 [=====>........................] - ETA: 3s - loss: 0.2436 - acc: 0.9266
14240/60000 [======>.......................] - ETA: 2s - loss: 0.2466 - acc: 0.9256
15040/60000 [======>.......................] - ETA: 2s - loss: 0.2494 - acc: 0.9249
15840/60000 [======>.......................] - ETA: 2s - loss: 0.2475 - acc: 0.9252
16640/60000 [=======>....................