Advertisement
Guest User

Untitled

a guest
Jan 16th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.20 KB | None | 0 0
  1. # Keras versions
  2. import numpy
  3. from keras.models import Sequential
  4. from keras.layers import Dense, Dropout, Activation, Flatten, Convolution2D, MaxPooling2D
  5. from keras.utils import np_utils
  6. from keras.datasets import mnist
  7.  
  8. def normalize_data(x, y, convolutional=False):
  9.   a,b,c = x.shape
  10.   if convolutional:
  11.     x = x.reshape(a, b, c, 1).astype('float32')
  12.   else:
  13.     x = x.reshape(a, b*c).astype('float32')
  14.   x /= 255
  15.   y = np_utils.to_categorical(y, 10)
  16.   return x, y
  17.  
  18. def regular_model(model=Sequential()):
  19.   model.add(Dense(800, input_dim=784, init='normal', activation='relu'))
  20.   model.add(Dense(10, init='normal', activation='softmax'))
  21.  
  22.   model.compile(loss='categorical_crossentropy', optimizer='SGD', metrics=['accuracy'])
  23.   return model
  24.  
  25. def convolutional_model(model=Sequential(),
  26.                         kernel_size=(3,3),
  27.                         pool_size=(2,2),
  28.                         img_size=(28, 28),
  29.                         filters_count=32):
  30.   model.add(Convolution2D(filters_count, *kernel_size, border_mode='valid',
  31.    input_shape=(img_size[0], img_size[1], 1)))
  32.   model.add(Activation('relu'))
  33.   model.add(Convolution2D(filters_count, *kernel_size))
  34.   model.add(Activation('relu'))
  35.   model.add(MaxPooling2D(pool_size=pool_size))
  36.   model.add(Dropout(0.25))
  37.  
  38.   model.add(Flatten())
  39.   model.add(Dense(128))
  40.   model.add(Activation('relu'))
  41.   model.add(Dropout(0.5))
  42.   model.add(Dense(10))
  43.   model.add(Activation('softmax'))
  44.  
  45.   model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])
  46.   return model
  47.  
  48. def training_model(x_train, y_train, x_test, y_test, convolutional=False):
  49.   x_train, y_train = normalize_data(x_train, y_train, convolutional=convolutional)
  50.   model = convolutional_model() if convolutional else regular_model()
  51.   model.fit(x_train, y_train, batch_size=32, nb_epoch=25, validation_split=0.1, verbose=True)
  52.   score = model.evaluate(*normalize_data(x_test, y_test, convolutional=convolutional), verbose=1)
  53.   print('Test score:', score[0])
  54.   print('Test accuracy:', score[1])
  55.  
  56. if __name__ == '__main__':
  57.   (x_train, y_train), (x_test, y_test) = mnist.load_data()
  58.   training_model(x_train, y_train, x_test, y_test, convolutional=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement