CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
amanchadha

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: amanchadha/coursera-deep-learning-specialization
Path: blob/master/C5 - Sequence Models/Week 3/Trigger word detection/test_utils.py
Views: 4819
1
from termcolor import colored
2
3
from tensorflow.keras.layers import Input
4
from tensorflow.keras.layers import Conv2D
5
from tensorflow.keras.layers import MaxPooling2D
6
from tensorflow.keras.layers import Dropout
7
from tensorflow.keras.layers import Conv2DTranspose
8
from tensorflow.keras.layers import concatenate
9
from tensorflow.keras.layers import ZeroPadding2D
10
from tensorflow.keras.layers import Dense
11
from tensorflow.keras.layers import LSTM
12
from tensorflow.keras.layers import RepeatVector
13
from tensorflow.keras.layers import TimeDistributed
14
from tensorflow.keras.layers import GRU
15
from tensorflow.keras.layers import Conv1D
16
17
# Compare the two inputs
18
def comparator(learner, instructor):
19
layer = 0
20
for a, b in zip(learner, instructor):
21
if tuple(a) != tuple(b):
22
print(colored("Test failed", attrs=['bold']),
23
f"at layer: {layer}",
24
"\n Expected value \n\n", colored(f"{b}", "green"),
25
"\n\n does not match the input value: \n\n",
26
colored(f"{a}", "red"))
27
raise AssertionError("Error in test")
28
layer += 1
29
print(colored("All tests passed!", "green"))
30
31
# extracts the description of a given model
32
def summary(model):
33
model.compile(optimizer='adam',
34
loss='categorical_crossentropy',
35
metrics=['accuracy'])
36
result = []
37
for layer in model.layers:
38
descriptors = [layer.__class__.__name__, layer.output_shape, layer.count_params()]
39
if (type(layer) == Conv1D):
40
descriptors.append(layer.padding)
41
descriptors.append(layer.activation.__name__)
42
descriptors.append(layer.strides)
43
descriptors.append(layer.kernel_size)
44
descriptors.append(layer.kernel_initializer.__class__.__name__)
45
46
if (type(layer) == Conv2D):
47
descriptors.append(layer.padding)
48
descriptors.append(layer.activation.__name__)
49
descriptors.append(layer.kernel_initializer.__class__.__name__)
50
51
if (type(layer) == MaxPooling2D):
52
descriptors.append(layer.pool_size)
53
descriptors.append(layer.strides)
54
descriptors.append(layer.padding)
55
56
if (type(layer) == Dropout):
57
descriptors.append(layer.rate)
58
59
if (type(layer) == ZeroPadding2D):
60
descriptors.append(layer.padding)
61
62
if (type(layer) == Dense):
63
descriptors.append(layer.activation.__name__)
64
65
if (type(layer) == LSTM):
66
descriptors.append(layer.input_shape)
67
descriptors.append(layer.activation.__name__)
68
69
if (type(layer) == RepeatVector):
70
descriptors.append(layer.n)
71
72
if (type(layer) == TimeDistributed):
73
descriptors.append(layer.layer.activation.__name__)
74
75
if (type(layer) == GRU):
76
descriptors.append(layer.return_sequences)
77
78
result.append(descriptors)
79
return result
80