-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrain.py
77 lines (62 loc) · 2.15 KB
/
train.py
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
64
65
66
67
68
69
70
71
72
73
74
75
76
# -*- coding: utf-8 -*-
"""train.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1sBIiIefVMDY8YXyCxtWPi_mphR_0exz1
"""
# importing packages
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import Flatten
from keras.layers.convolutional import Conv2D
from keras.layers.convolutional import MaxPooling2D
from keras.utils import np_utils
# loading mnist data
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# reshaping data for training and testing
X_train = X_train.reshape((X_train.shape[0], 28, 28, 1)).astype('float32')
X_test = X_test.reshape((X_test.shape[0], 28, 28, 1)).astype('float32')
# normalize features for better prediction
X_train = X_train / 255
X_test = X_test / 255
# categorizing labels
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
num_classes = y_test.shape[1]
# Creating the hyperparameter
with open('accuracy') as f:
data=f.read().split('\n')
accuracy=data[0][:2]
with open('iter') as f:
data=f.read().split('\n')
iterator=data[0]
# print(accuracy,iterator)
# function for creating model
def create_model(i):
model = Sequential()
for it in range(i):
model.add(Conv2D(64, (3, 3), input_shape=(28, 28, 1), activation='relu'))
model.add(MaxPooling2D())
model.add(Flatten())
j=1
for j in range(1,i+1):
model.add(Dense(256//j, activation='relu'))
model.add(Dense(256//(j+1), activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
# Cheking if we already have optimum accuracy
if int(accuracy)>95:
print('Model is already optimized')
else:
model = create_model(int(iterator))
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=1)
# Finding the accuracy score
scores = model.evaluate(X_test, y_test, verbose=0)
acc_score=scores[1]*100
with open('accuracy','w') as ac:
ac.write(str(acc_score))
with open('iter','w') as it:
it.write(str(int(iterator)+1))