from keras.datasets import mnist import numpy as np from keras.models import Sequential from keras.layers import Dense,Dropout,Flatten from keras.layers.convolutional import Conv2D from keras.layers.convolutional import MaxPooling2D from keras.utils import np_utils from keras import backend backend.set_image_data_format('channels_last') seed = 7 np.random.seed(seed) #从keras导入MNIST数据集 (x_train,y_train),(x_validation,y_validation) = mnist.load_data() x_train = x_train.reshape(x_train.shape[0],28,28,1).astype('float32') x_validation = x_validation.reshape(x_validation.shape[0],28,28,1).astype('float32') #归一化数据到0-1 x_train = x_train/255 x_validation = x_validation/255 #进行one-hot编码 y_train = np_utils.to_categorical(y_train) y_validation = np_utils.to_categorical(y_validation) #创建模型 def create_model(): model = Sequential() model.add(Conv2D(32,(5,5),input_shape=(28,28,1),activation='relu')) model.add(Conv2D(15,(3,3),activation='relu')) model.add(MaxPooling2D(pool_size=(2,2))) model.add(MaxPooling2D(pool_size=(2,2))) model.add(Dropout(0,2)) model.add(Flatten()) model.add(Dense(units=128,activation='relu')) model.add(Dense(units=128,activation='relu')) model.add(Dense(units=10,activation='softmax'))

#编译模型
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
return model

model = create_model() model.fit(x_train,y_train,epochs=30,batch_size=200,verbose=1) Epoch 1/30 300/300 [==============================] - 17s 54ms/step - loss: 0.3249 - accuracy: 0.9069 Epoch 2/30 300/300 [==============================] - 16s 54ms/step - loss: 0.0761 - accuracy: 0.9768 Epoch 3/30 300/300 [==============================] - 20s 65ms/step - loss: 0.0508 - accuracy: 0.9845 Epoch 4/30 300/300 [==============================] - 22s 75ms/step - loss: 0.0411 - accuracy: 0.9872 Epoch 5/30 300/300 [==============================] - 22s 74ms/step - loss: 0.0335 - accuracy: 0.9899 Epoch 6/30 300/300 [==============================] - 21s 71ms/step - loss: 0.0286 - accuracy: 0.9911 Epoch 7/30 300/300 [==============================] - 21s 72ms/step - loss: 0.0241 - accuracy: 0.9924 Epoch 8/30 300/300 [==============================] - 21s 71ms/step - loss: 0.0212 - accuracy: 0.9932 Epoch 9/30 300/300 [==============================] - 21s 70ms/step - loss: 0.0184 - accuracy: 0.9939 Epoch 10/30 300/300 [==============================] - 21s 70ms/step - loss: 0.0150 - accuracy: 0.9951 Epoch 11/30 300/300 [==============================] - 19s 62ms/step - loss: 0.0134 - accuracy: 0.9958 Epoch 12/30 300/300 [==============================] - 17s 58ms/step - loss: 0.0125 - accuracy: 0.9959 Epoch 13/30 300/300 [==============================] - 18s 58ms/step - loss: 0.0112 - accuracy: 0.9965 Epoch 14/30 300/300 [==============================] - 17s 58ms/step - loss: 0.0116 - accuracy: 0.9959 Epoch 15/30 300/300 [==============================] - 19s 62ms/step - loss: 0.0080 - accuracy: 0.9974 Epoch 16/30 300/300 [==============================] - 18s 61ms/step - loss: 0.0101 - accuracy: 0.9967 Epoch 17/30 300/300 [==============================] - 18s 60ms/step - loss: 0.0083 - accuracy: 0.9970 Epoch 18/30 300/300 [==============================] - 18s 59ms/step - loss: 0.0066 - accuracy: 0.9976 Epoch 19/30 300/300 [==============================] - 18s 61ms/step - loss: 0.0076 - accuracy: 0.9972 Epoch 20/30 300/300 [==============================] - 19s 63ms/step - loss: 0.0067 - accuracy: 0.9977 Epoch 21/30 300/300 [==============================] - 18s 59ms/step - loss: 0.0055 - accuracy: 0.9981 Epoch 22/30 300/300 [==============================] - 18s 60ms/step - loss: 0.0056 - accuracy: 0.9982 Epoch 23/30 300/300 [==============================] - 18s 59ms/step - loss: 0.0053 - accuracy: 0.9981 Epoch 24/30 300/300 [==============================] - 18s 59ms/step - loss: 0.0072 - accuracy: 0.9976 Epoch 25/30 300/300 [==============================] - 18s 59ms/step - loss: 0.0040 - accuracy: 0.9987 Epoch 26/30 300/300 [==============================] - 18s 59ms/step - loss: 0.0066 - accuracy: 0.9980 Epoch 27/30 300/300 [==============================] - 18s 59ms/step - loss: 0.0053 - accuracy: 0.9982 Epoch 28/30 300/300 [==============================] - 18s 60ms/step - loss: 0.0021 - accuracy: 0.9992 Epoch 29/30 300/300 [==============================] - 18s 60ms/step - loss: 0.0025 - accuracy: 0.9993 Epoch 30/30 300/300 [==============================] - 18s 60ms/step - loss: 0.0075 - accuracy: 0.9976 <keras.callbacks.History at 0x242d3d36080> score = model.evaluate(x_validation,y_validation,verbose=0) print('CNN_Small:%.2f%%'%(score[1]*100))

CNN_Small:99.09%

检查一下代码问题 内容:代码没有明显问题,可以运行。

MNIST手写数字识别:基于Keras的CNN模型实战

原文地址: https://www.cveoy.top/t/topic/oamM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录