import numpy as np import tensorflow as tf import tensorflow.keras as keras from tensorflow.keras import Sequential from tensorflow.keras.layers import Conv2D, AvgPool2D, Flatten, Dense, Dropout def load_train(path): x_train = np.load(path + 'train_features.npy') y_train = np.load(path + 'train_target.npy') x_train = x_train.reshape(x_train.shape[0],28,28,1)/255.0 return x_train, y_train def create_model(input_shape): model = Sequential() model.add(Conv2D(filters = 32, kernel_size=(3,3),padding = 'same', activation = 'relu',input_shape=(28,28,1))) model.add(AvgPool2D(pool_size=(2, 2))) model.add(Conv2D(filters = 64, kernel_size=(3,3), activation = 'relu')) model.add(AvgPool2D(pool_size=(2, 2))) model.add(Conv2D(filters = 128, kernel_size=(3,3), activation = 'relu')) model.add(Flatten()) model.add(Dense(units=100,activation = 'relu')) model.add(Dense(units=50,activation = 'relu')) model.add(Dense(units=30,activation = 'relu')) model.add(Dense(units=10,activation = 'softmax')) model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['acc']) return model def train_model(model, train_data, test_data, batch_size=32, epochs=5, steps_per_epoch=None, validation_steps=None): x_train, y_train = train_data x_test, y_test = test_data model.fit(train_data, validation_data=test_data,batch_size=batch_size, epochs=epochs, steps_per_epoch=steps_per_epoch,validation_steps=validation_steps, verbose=2, shuffle=True) return model