Repository navigation
Expand file tree
/
Copy pathmnist_usecase_CNN.py
More file actions
64 lines (53 loc) · 1.86 KB
/
Copy pathmnist_usecase_CNN.py
File metadata and controls
64 lines (53 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"""
Configuration Conv(5x5x5)-Pool(3x3)-FC(10) scored 74.5% train accuracy and 81.8% test accuracy
"""
import cnn
from cnn import optimisers
import mnist_dataloader
# np.set_printoptions(linewidth=200)
train_images, train_labels, test_images, test_labels = mnist_dataloader.get_data()
train_images = train_images.reshape((train_images.shape[0],1,train_images.shape[1],train_images.shape[2]))
test_images = test_images.reshape((test_images.shape[0],1,test_images.shape[1],test_images.shape[2]))
print(train_images.shape,train_labels.shape)
model = cnn.Model()
model.add_layer(
cnn.layers.Conv2D(filt_shape=(5,5),num_filters=15,stride=2,pad_type='valid',input_shape=(1,28,28),initiation_method='kaiming_normal')
)
# model.add_layer(
# CNN.Pool_Layer(filt_shape=(3,3),stride=2,pool_type='max',pad_type='include')
# )
model.add_layer(
cnn.layers.Conv2D(filt_shape=(3,3),num_filters=25,stride=2,initiation_method='kaiming_normal')
)
model.add_layer(
cnn.layers.Pool(filt_shape=(2,2),stride=2,pool_type='max')
)
model.add_layer(
cnn.layers.Flatten()
)
# model.add_layer(
# CNN.FC_Layer(128,activation='relu',initiation_method='kaiming_normal')
# )
# model.add_layer(
# CNN.FC_Layer(128,activation='relu',initiation_method='kaiming_normal')
# )
model.add_layer(
cnn.layers.FC(10,activation='softmax',initiation_method='kaiming_normal')
)
model.prepare_model(optimiser=optimisers.Adam())
input('Run training?')
train_finish, training_duration = model.train(
train_images,
train_labels,
epochs=5,
max_batch_size=5000,
shuffle=False,
cost_fn='cross_entropy',
learning_rate=0.001,
random_seed=42
)
print(f'Test Accuracy: {model.evaluate(test_images,test_labels)*100:.2f}%')
print(f'Training duration: {training_duration}')
save_name = f'models/cnn_model_adam_tf_comparitor_vectorised_{train_finish.strftime("%H-%M-%S")}.pkl'
print(f'Model saved to: {save_name}')
model.save_model(save_name)