- 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