Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy
- from keras.models import Sequential
- from keras.layers import Dense, Dropout, Flatten, BatchNormalization, Activation
- from keras.constraints import maxnorm
- from keras.layers.convolutional import Conv2D, MaxPooling2D
- from keras.utils import np_utils
- from keras.datasets import cifar10
- from tensorflow.python.keras.callbacks import TensorBoard
- from time import time
- # fix random seed for reproducibility
- seed = 21
- numpy.random.seed(seed)
- # load data
- (X_train, y_train), (X_test, y_test) = cifar10.load_data()
- # normalize inputs from 0-255 to 0.0-1.0
- X_train = X_train.astype('float32')
- X_test = X_test.astype('float32')
- X_train = X_train / 255.0
- X_test = X_test / 255.0
- # one hot encode outputs
- y_train = np_utils.to_categorical(y_train)
- y_test = np_utils.to_categorical(y_test)
- num_classes = y_test.shape[1]
- #Create the model
- model = Sequential()
- model.add(Conv2D(32, (3, 3), input_shape=X_train.shape[1:], padding='same'))
- model.add(Activation('relu'))
- model.add(Dropout(0.2))
- model.add(BatchNormalization())
- model.add(Conv2D(64, (3, 3), padding='same'))
- model.add(Activation('relu'))
- model.add(MaxPooling2D(pool_size=(2, 2)))
- model.add(Dropout(0.2))
- model.add(BatchNormalization())
- model.add(Conv2D(64, (3, 3), padding='same'))
- model.add(Activation('relu'))
- model.add(MaxPooling2D(pool_size=(2, 2)))
- model.add(Dropout(0.2))
- model.add(BatchNormalization())
- model.add(Conv2D(128, (3, 3), padding='same'))
- model.add(Activation('relu'))
- model.add(Dropout(0.2))
- model.add(BatchNormalization())
- model.add(Flatten())
- model.add(Dropout(0.2))
- model.add(Dense(256, kernel_constraint=maxnorm(3)))
- model.add(Activation('relu'))
- model.add(Dropout(0.2))
- model.add(BatchNormalization())
- model.add(Dense(128, kernel_constraint=maxnorm(3)))
- model.add(Activation('relu'))
- model.add(Dropout(0.2))
- model.add(BatchNormalization())
- model.add(Dense(num_classes))
- model.add(Activation('softmax'))
- epochs = 1
- optimizer = 'Adam'
- tensorboard = TensorBoard(log_dir="logs/{}".format(time()))
- model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
- print(model.summary())
- model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=epochs, batch_size=64, callbacks = [tensorboard])
- # Final evaluation of the model
- scores = model.evaluate(X_test, y_test, verbose=0)
- print("Accuracy: %.2f%%" % (scores[1]*100))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement