Skip to content

Instantly share code, notes, and snippets.

@nesterione
Created July 7, 2017 20:34
Show Gist options
  • Select an option

  • Save nesterione/7fd799bc8153871dd880fae7b2f911b1 to your computer and use it in GitHub Desktop.

Select an option

Save nesterione/7fd799bc8153871dd880fae7b2f911b1 to your computer and use it in GitHub Desktop.
from __future__ import print_function
import keras
from keras.datasets import cifar10
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D
import numpy as np
batch_size = 32
num_classes = 10
epochs = 1
data_augmentation = True
import pandas as pd
data = pd.read_csv("./data/train.csv")
data_set = data.as_matrix()
x_data = data_set[:,1:]
y_data = data_set[:,0]
# print(x_train.shape)
# print(y_train.shape)
x_data = np.reshape(x_data,(42000,28,28,1))
print("data shape",x_data.shape)
# print('x_train shape:', x_train.shape)
# print(x_train.shape[0], 'train samples')
# print(x_test.shape[0], 'test samples')
b = int(x_data.shape[0]*0.8)
x_train, x_test= x_data[:b], x_data[b:]
y_train, y_test= y_data[:b], y_data[b:]
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)
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same',
input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('softmax'))
# initiate RMSprop optimizer
opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)
# Let's train the model using RMSprop
model.compile(loss='categorical_crossentropy',
optimizer=opt,
metrics=['accuracy'])
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print('Not using data augmentation.')
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
validation_data=(x_test, y_test),
shuffle=True)
print('saving model')
model.save('nn_cnn.h5')
model.save_weights('nn_cnn_weights.h5')
print('model saved')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment