Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''Trains a simple ConvNet on the MNIST dataset. It gets more than 99% test accuracy after 12 epochs
- (but there is still a lot of margin for parameter tuning). Training can take a few minutes!'''
- # Import libraries
- from __future__ import print_function
- import keras
- from keras.datasets import mnist
- from keras.models import Sequential
- from keras.layers import Dense, Dropout, Flatten
- from keras.layers import Conv2D, MaxPooling2D
- from keras import backend as K
- # Define hyperparameters
- batch_size = 128
- num_classes = 10
- epochs = 12
- # Input image dimensions
- img_rows, img_cols = 28, 28
- # Split the data between train and test sets
- (x_train, y_train), (x_test, y_test) = mnist.load_data()
- if K.image_data_format() == 'channels_first':
- x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
- x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
- input_shape = (1, img_rows, img_cols)
- else:
- x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
- x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
- input_shape = (img_rows, img_cols, 1)
- x_train = x_train.astype('float32')
- x_test = x_test.astype('float32')
- x_train /= 255
- x_test /= 255
- print('x_train shape:', x_train.shape)
- print(x_train.shape[0], 'train samples')
- print(x_test.shape[0], 'test samples')
- # Convert class vectors to binary class matrices
- y_train = keras.utils.to_categorical(y_train, num_classes)
- y_test = keras.utils.to_categorical(y_test, num_classes)
- # Define the sequential Keras model composed of a few layers
- model = Sequential()
- model.add(Conv2D(64, kernel_size=(4, 3),activation='relu', input_shape=input_shape))
- model.add(Conv2D(64, (5, 5), activation='relu'))
- model.add(MaxPooling2D(pool_size=(4, 4)))
- model.add(Dropout(0.10))
- model.add(Flatten())
- model.add(Dense(128, activation='relu'))
- model.add(Dropout(0.15))
- model.add(Dense(num_classes, activation='softmax'))
- # Compile the model using optimizer
- model.compile(loss=keras.losses.categorical_crossentropy,
- optimizer=keras.optimizers.Adadelta(), metrics=['accuracy'])
- # Train the model, validate, evaluate, and present scores
- model.fit(x_train, y_train,batch_size=batch_size, epochs=epochs,
- verbose=1, validation_data=(x_test, y_test))
- score = model.evaluate(x_test, y_test, verbose=0)
- print('Test loss:', score[0])
- print('Test accuracy:', score[1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement