-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtestmodels.py
More file actions
72 lines (55 loc) · 2.59 KB
/
testmodels.py
File metadata and controls
72 lines (55 loc) · 2.59 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
64
65
66
67
68
69
70
71
72
import pickle
import numpy as np
import time
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
import tensorflow as tf
import constants as c
# to run tensorboard:
# tensorboard --logdir=logs/
# loops to create different combinations for testing
def test_layers(path, size):
inputlocation = os.path.join(path, c.X_NAME)
pickle_in = open(inputlocation, 'rb')
X = pickle.load(pickle_in)
inputlocation = os.path.join(path, c.Y_NAME)
pickle_in = open(inputlocation, 'rb')
y = pickle.load(pickle_in)
###################################
# rule of thumb, try one on each size +/-
dense_layers = [0, 1, 2]
layer_sizes = [32, 64, 128]
conv_layers = [1, 2, 3]
for dense_layer in dense_layers:
for layer_size in layer_sizes:
for conv_layer in conv_layers:
NAME = "{}-conv-{}-nodes-{}-dense-{}".format(conv_layer, layer_size, dense_layer, int(time.time()))
tensorboard = tf.keras.callbacks.TensorBoard(log_dir='logs\\{}'.format(NAME))
print(NAME)
model = tf.keras.Sequential()
# (3,3) is windows, x.shape is IMG_SIZExIMG_SIZEx1 ignore -1
model.add(tf.keras.layers.Conv2D(64, (3, 3), input_shape=X.shape[1:]))
model.add(tf.keras.layers.Activation("relu"))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2,2)))
for l in range(conv_layer-1):
model.add(tf.keras.layers.Conv2D(64, (3, 3)))
model.add(tf.keras.layers.Activation("relu"))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))
model.add(tf.keras.layers.Flatten())
for l in range(dense_layer):
model.add(tf.keras.layers.Dense(layer_size))
model.add(tf.keras.layers.Activation("relu"))
model.add(tf.keras.layers.Dropout(0.2))
# model.add(tf.keras.layers.Dense(64))
# model.add(tf.keras.layers.Activation("relu"))
# output
model.add(tf.keras.layers.Dense(size))
model.add(tf.keras.layers.Activation("softmax"))
model.compile(loss="sparse_categorical_crossentropy",
optimizer="adam",
metrics=['accuracy'])
y = np.asarray(y)
model.fit(X, y, batch_size=6,
epochs=c.EPOCHS, validation_split=c.VALIDATION_SPLIT,
callbacks=[tensorboard])
test_layers(c.SCREEN_PATH, len(c.SCREEN_CATEGORIES))