Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Path: blob/master/C5 - Sequence Models/Week 3/Trigger word detection/test_utils.py
Views: 4819
from termcolor import colored12from tensorflow.keras.layers import Input3from tensorflow.keras.layers import Conv2D4from tensorflow.keras.layers import MaxPooling2D5from tensorflow.keras.layers import Dropout6from tensorflow.keras.layers import Conv2DTranspose7from tensorflow.keras.layers import concatenate8from tensorflow.keras.layers import ZeroPadding2D9from tensorflow.keras.layers import Dense10from tensorflow.keras.layers import LSTM11from tensorflow.keras.layers import RepeatVector12from tensorflow.keras.layers import TimeDistributed13from tensorflow.keras.layers import GRU14from tensorflow.keras.layers import Conv1D1516# Compare the two inputs17def comparator(learner, instructor):18layer = 019for a, b in zip(learner, instructor):20if tuple(a) != tuple(b):21print(colored("Test failed", attrs=['bold']),22f"at layer: {layer}",23"\n Expected value \n\n", colored(f"{b}", "green"),24"\n\n does not match the input value: \n\n",25colored(f"{a}", "red"))26raise AssertionError("Error in test")27layer += 128print(colored("All tests passed!", "green"))2930# extracts the description of a given model31def summary(model):32model.compile(optimizer='adam',33loss='categorical_crossentropy',34metrics=['accuracy'])35result = []36for layer in model.layers:37descriptors = [layer.__class__.__name__, layer.output_shape, layer.count_params()]38if (type(layer) == Conv1D):39descriptors.append(layer.padding)40descriptors.append(layer.activation.__name__)41descriptors.append(layer.strides)42descriptors.append(layer.kernel_size)43descriptors.append(layer.kernel_initializer.__class__.__name__)4445if (type(layer) == Conv2D):46descriptors.append(layer.padding)47descriptors.append(layer.activation.__name__)48descriptors.append(layer.kernel_initializer.__class__.__name__)4950if (type(layer) == MaxPooling2D):51descriptors.append(layer.pool_size)52descriptors.append(layer.strides)53descriptors.append(layer.padding)5455if (type(layer) == Dropout):56descriptors.append(layer.rate)5758if (type(layer) == ZeroPadding2D):59descriptors.append(layer.padding)6061if (type(layer) == Dense):62descriptors.append(layer.activation.__name__)6364if (type(layer) == LSTM):65descriptors.append(layer.input_shape)66descriptors.append(layer.activation.__name__)6768if (type(layer) == RepeatVector):69descriptors.append(layer.n)7071if (type(layer) == TimeDistributed):72descriptors.append(layer.layer.activation.__name__)7374if (type(layer) == GRU):75descriptors.append(layer.return_sequences)7677result.append(descriptors)78return result7980