"""This module implements a convolution classifier with maxpool operation.""" import numpy as np from keras.datasets import mnist from keras.models import Sequential from keras.layers import Dense, Conv2D, Flatten, MaxPool2D import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from loss_plot import loss_plot # Number of epochs epochs = 20 # Batchsize batch_size = 128 # Optimizer for the generator from keras.optimizers import Adam optimizer = Adam(lr=0.0001) # Shape of the input image input_shape = (28,28,1) (X_train, y_train), (X_test, y_test) = mnist.load_data() X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, stratify = y_train, test_size = 0.08333, random_state=42) X_train = X_train.reshape(-1,28,28,1) X_val = X_val.reshape(-1,28,28,1) X_test = X_test.reshape(-1,28,28,1) model = Sequential() model.add(Conv2D(32, kernel_size=(3,3), input_shape=input_shape, activation='relu')) model.add(MaxPool2D(2,2)) model.add(Flatten()) model.add(Dense(128, activation = 'relu')) model.add(Dense(10, activation='softmax')) model.compile(loss = 'sparse_categorical_crossentropy', optimizer=optimizer, metrics = ['accuracy']) history = model.fit(X_train, y_train, epochs = epochs, batch_size=batch_size, validation_data=(X_val, y_val)) loss,acc = model.evaluate(X_test, y_test) print('Test loss:', loss) print('Accuracy:', acc) loss_plot(history)