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 1/Jazz improvisation with LSTM/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
14
15
16
17
# Compare the two inputs
18
def comparator(learner, instructor):
19
if len(learner) != len(instructor):
20
raise AssertionError("Error in test. The lists contain a different number of elements")
21
for index, a in enumerate(instructor):
22
b = learner[index]
23
if tuple(a) != tuple(b):
24
print(colored(f"Test failed at index {index}", attrs=['bold']),
25
"\n Expected value \n\n", colored(f"{b}", "green"),
26
"\n\n does not match the input value: \n\n",
27
colored(f"{a}", "red"))
28
raise AssertionError("Error in test")
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) == Conv2D):
40
descriptors.append(layer.padding)
41
descriptors.append(layer.activation.__name__)
42
descriptors.append(layer.kernel_initializer.__class__.__name__)
43
if (type(layer) == MaxPooling2D):
44
descriptors.append(layer.pool_size)
45
descriptors.append(layer.strides)
46
descriptors.append(layer.padding)
47
if (type(layer) == Dropout):
48
descriptors.append(layer.rate)
49
if (type(layer) == ZeroPadding2D):
50
descriptors.append(layer.padding)
51
if (type(layer) == Dense):
52
descriptors.append(layer.activation.__name__)
53
if (type(layer) == LSTM):
54
descriptors.append(layer.input_shape)
55
descriptors.append(layer.activation.__name__)
56
if (type(layer) == RepeatVector):
57
descriptors.append(layer.n)
58
result.append(descriptors)
59
return result
60