[深度学习框架] Keras上使用CNN进行mnist分类

来源:互联网 发布:北京网络预约挂号平台 编辑:程序博客网 时间:2024/05/06 01:31
# coding: utf-8import numpy as npfrom keras.datasets import mnistfrom keras.utils import np_utilsfrom keras.models import Sequentialfrom keras.layers import Dense, Activation, Convolution2D, MaxPooling2D, Flattenfrom keras.optimizers import Adamnp.random.seed(1337)# download the mnist(X_train, Y_train), (X_test, Y_test) = mnist.load_data()# data pre-processingX_train = X_train.reshape(-1, 1, 28, 28)/255X_test = X_test.reshape(-1, 1, 28, 28)/255Y_train = np_utils.to_categorical(Y_train, num_classes=10)Y_test = np_utils.to_categorical(Y_test, num_classes=10)# build CNNmodel = Sequential()# conv layer 1 output shape(32, 28, 28)model.add(Convolution2D(filters=32,                       kernel_size=5,                       strides=1,                       padding='same',                       batch_input_shape=(None, 1, 28, 28),                       data_format='channels_first'))model.add(Activation('relu'))# pooling layer1 (max pooling) output shape(32, 14, 14)model.add(MaxPooling2D(pool_size=2,                        strides=2,                        padding='same',                        data_format='channels_first'))# conv layer 2 output shape (64, 14, 14)model.add(Convolution2D(64, 5,                         strides=1,                         padding='same',                         data_format='channels_first'))model.add(Activation('relu'))# pooling layer 2 (max pooling) output shape (64, 7, 7)model.add(MaxPooling2D(2, 2, 'same',                        data_format='channels_first'))# full connected layer 1 input shape (64*7*7=3136), output shape (1024)model.add(Flatten())model.add(Dense(1024))model.add(Activation('relu'))# full connected layer 2 to shape (10) for 10 classesmodel.add(Dense(10))model.add(Activation('softmax'))# define optimizeradam = Adam(lr=1e-4)model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy'])# trainingprint 'Training'model.fit(X_train, Y_train, epochs=1, batch_size=64)# testingprint 'Testing'loss, accuracy = model.evaluate(X_test, Y_test)print 'loss, accuracy: ', (loss, accuracy)

原创粉丝点击