Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

Jupyter notebook NIELSEN/src/keras.ipynb

Project: AI
Views: 180
Kernel: Python 2 (SageMath)
from keras.datasets import mnist (X_train, y_train), (X_test, y_test) = mnist.load_data()
'''Trains a simple deep NN on the MNIST dataset. Gets to 98.40% test accuracy after 20 epochs (there is *a lot* of margin for parameter tuning). 2 seconds per epoch on a K520 GPU. ''' from __future__ import print_function import numpy as np np.random.seed(1337) # for reproducibility from keras.datasets import mnist from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation, Flatten from keras.layers import Convolution2D, MaxPooling2D from keras.optimizers import SGD, Adam, RMSprop from keras.utils import np_utils batch_size = 64 nb_classes = 10 nb_epoch = 20 # the data, shuffled and split between train and test sets (X_train, y_train), (X_test, y_test) = mnist.load_data() X_train = X_train.reshape(60000, 784) X_test = X_test.reshape(10000, 784) X_train = X_train.astype('float32') X_test = X_test.astype('float32') X_train /= 255 X_test /= 255 print(X_train.shape[0], 'train samples') print(X_test.shape[0], 'test samples') # convert class vectors to binary class matrices Y_train = np_utils.to_categorical(y_train, nb_classes) Y_test = np_utils.to_categorical(y_test, nb_classes) model = Sequential() model.add(Dense(100, input_shape=(784,))) model.add(Activation('relu')) model.add(Dense(input_dim =100, output_dim =10)) model.add(Activation('softmax')) sgd = SGD(lr=0.1, decay=0, momentum=0.0, nesterov=False) model.summary() #D, H, C = 1000, 100, 10 #model.add(Dense(input_dim =D, output_dim = H)) # model.add(Dense(input_dim =H, output_dim = C)) model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy']) history = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0, validation_data=(X_test, Y_test)) score = model.evaluate(X_test, Y_test, verbose=0) print('Test score:', score[0]) print('Test accuracy:', score[1])
60000 train samples 10000 test samples ____________________________________________________________________________________________________ Layer (type) Output Shape Param # Connected to ==================================================================================================== dense_5 (Dense) (None, 100) 78500 dense_input_3[0][0] ____________________________________________________________________________________________________ activation_5 (Activation) (None, 100) 0 dense_5[0][0] ____________________________________________________________________________________________________ dense_6 (Dense) (None, 10) 1010 activation_5[0][0] ____________________________________________________________________________________________________ activation_6 (Activation) (None, 10) 0 dense_6[0][0] ==================================================================================================== Total params: 79,510 Trainable params: 79,510 Non-trainable params: 0 ____________________________________________________________________________________________________ Test score: 0.0688523479761 Test accuracy: 0.9777
'''Trains a simple convnet on the MNIST dataset. Gets to 99.25% test accuracy after 12 epochs (there is still a lot of margin for parameter tuning). 16 seconds per epoch on a GRID K520 GPU. ''' from __future__ import print_function import numpy as np np.random.seed(1337) # for reproducibility from keras.datasets import mnist from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Convolution2D, MaxPooling2D from keras.optimizers import SGD, Adam, RMSprop from keras.utils import np_utils from keras import backend as K batch_size = 128 nb_classes = 10 nb_epoch = 12 #-------------------------- # NIELSEN batch_size = 10 # NIELSEN #nb_epoch = 60 # input image dimensions img_rows, img_cols = 28, 28 # number of convolutional filters to use #nb_filters = 32 # NIELSEN nb_filters = 20 # size of pooling area for max pooling pool_size = (2, 2) # convolution kernel size #kernel_size = (3, 3) # NIELSEN kernel_size = (5, 5) # the data, shuffled and split between train and test sets (X_train, y_train), (X_test, y_test) = mnist.load_data() if K.image_dim_ordering() == 'th': 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 = np_utils.to_categorical(y_train, nb_classes) Y_test = np_utils.to_categorical(y_test, nb_classes) model = Sequential() #model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], # border_mode='valid', # input_shape=input_shape)) #model.add(Activation('relu')) #model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1])) #model.add(Activation('relu')) #model.add(MaxPooling2D(pool_size=pool_size)) #model.add(Dropout(0.25)) #model.add(Flatten()) #model.add(Dense(128)) #model.add(Activation('relu')) #model.add(Dropout(0.5)) #model.add(Dense(nb_classes)) #model.add(Activation('softmax')) model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='valid', input_shape=input_shape)) model.add(Activation('sigmoid')) model.add(MaxPooling2D(pool_size=pool_size)) model.add(Flatten()) #model.add(Dense(20*12*12)) model.add(Dense(input_dim =20*12*12, output_dim = 100)) model.add(Activation('sigmoid')) model.add(Dense(input_dim =100, output_dim = nb_classes)) model.add(Activation('softmax')) # model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy']) sgd = SGD(lr=0.1, decay=0, momentum=0.0, nesterov=False) model.summary() model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy']) model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0, validation_data=(X_test, Y_test)) score = model.evaluate(X_test, Y_test, verbose=0) print('Test score:', score[0]) print('Test accuracy:', score[1])