dcase_models.model.SMel

class dcase_models.model.SMel(model=None, model_path=None, metrics=['mean_squared_error'], mel_bands=128, n_seqs=64, audio_win=1024, audio_hop=512, alpha=1, scaler=None, amin=1e-10)[source]

Bases: dcase_models.model.container.KerasModelContainer

KerasModelContainer for SMel model.

P. Zinemanas, P. Cancela, M. Rocamora. “End–to–end Convolutional Neural Networks for Sound Event Detection in Urban Environments” Proceedings of the 24th Conference of Open Innovations Association FRUCT, 3rd IEEE FRUCT International Workshop on Semantic Audio and the Internet of Things. Moscow, Russia, April 2019.

Parameters:
mel_bands : int, default=128

Number of mel bands.

n_seqs : int, default=64

Time dimmension of the input.

audio_win : int, default=1024

Length of the audio window (number of samples of each frame).

audio_hop : int, default=512

Length of the hop size (in samples).

alpha : int, default=1

Multiply factor before apply log (compression factor).

scaler : tuple, list or None

If scaler is not None, this is used before output.

amin : float, default=1e-10 (-100 dB)

Minimum value for db calculation.

Examples

>>> from dcase_models.model.models import SMel
>>> model_container = SMel()
>>> model_container.model.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
input_1 (InputLayer)         (None, 64, 1024)          0
_________________________________________________________________
lambda (Lambda)              (None, 64, 1024, 1)       0
_________________________________________________________________
time_distributed_1 (TimeDist (None, 64, 64, 128)       131200
_________________________________________________________________
lambda_1 (Lambda)            (None, 64, 64, 128)       0
_________________________________________________________________
lambda_2 (Lambda)            (None, 64, 128)           0
_________________________________________________________________
lambda_3 (Lambda)            (None, 64, 128)           0
=================================================================
Total params: 131,200
Trainable params: 131,200
Non-trainable params: 0
_________________________________________________________________
Attributes:
model : keras.models.Model

Keras model.

__init__(model=None, model_path=None, metrics=['mean_squared_error'], mel_bands=128, n_seqs=64, audio_win=1024, audio_hop=512, alpha=1, scaler=None, amin=1e-10)[source]

Initialize ModelContainer

Parameters:
model : keras model or similar

Object that defines the model (i.e keras.models.Model)

model_path : str

Path to the model file

model_name : str

Model name

metrics : list of str

List of metrics used for evaluation

Methods

__init__([model, model_path, metrics, …]) Initialize ModelContainer
build() Builds the SMel Keras model.
check_if_model_exists(folder, **kwargs) Checks if the model already exits in the path.
cut_network(layer_where_to_cut) Cuts the network at the layer passed as argument.
evaluate(data_test, **kwargs) Evaluates the keras model using X_test and Y_test.
fine_tuning(layer_where_to_cut[, …]) Create a new model for fine-tuning.
get_available_intermediate_outputs() Return a list of available intermediate outputs.
get_intermediate_output(output_ix_name, inputs) Return the output of the model in a given layer.
get_number_of_parameters() Missing docstring here
load_model_from_json(folder, **kwargs) Loads a model from a model.json file in the path given by folder.
load_model_weights(weights_folder) Loads self.model weights in weights_folder/best_weights.hdf5.
load_pretrained_model_weights([weights_folder]) Loads pretrained weights to self.model weights.
save_model_json(folder) Saves the model to a model.json file in the given folder path.
save_model_weights(weights_folder) Saves self.model weights in weights_folder/best_weights.hdf5.
train(data_train, data_val[, weights_path, …]) Trains the keras model using the data and paramaters of arguments.
build()[source]

Builds the SMel Keras model.

check_if_model_exists(folder, **kwargs)

Checks if the model already exits in the path.

Check if the folder/model.json file exists and includes the same model as self.model.

Parameters:
folder : str

Path to the folder to check.

cut_network(layer_where_to_cut)

Cuts the network at the layer passed as argument.

Parameters:
layer_where_to_cut : str or int

Layer name (str) or index (int) where cut the model.

Returns:
keras.models.Model

Cutted model.

evaluate(data_test, **kwargs)

Evaluates the keras model using X_test and Y_test.

Parameters:
X_test : ndarray

3D array with mel-spectrograms of test set. Shape = (N_instances, N_hops, N_mel_bands)

Y_test : ndarray

2D array with the annotations of test set (one hot encoding). Shape (N_instances, N_classes)

scaler : Scaler, optional

Scaler objet to be applied if is not None.

Returns:
float

evaluation’s accuracy

list

list of annotations (ground_truth)

list

list of model predictions

fine_tuning(layer_where_to_cut, new_number_of_classes=10, new_activation='softmax', freeze_source_model=True, new_model=None)

Create a new model for fine-tuning.

Cut the model in the layer_where_to_cut layer and add a new fully-connected layer.

Parameters:
layer_where_to_cut : str or int

Name (str) of index (int) of the layer where cut the model. This layer is included in the new model.

new_number_of_classes : int

Number of units in the new fully-connected layer (number of classes).

new_activation : str

Activation of the new fully-connected layer.

freeze_source_model : bool

If True, the source model is set to not be trainable.

new_model : Keras Model

If is not None, this model is added after the cut model. This is useful if you want add more than a fully-connected layer.

get_available_intermediate_outputs()

Return a list of available intermediate outputs.

Return a list of model’s layers.

Returns:
list of str

List of layers names.

get_intermediate_output(output_ix_name, inputs)

Return the output of the model in a given layer.

Cut the model in the given layer and predict the output for the given inputs.

Returns:
ndarray

Output of the model in the given layer.

get_number_of_parameters()

Missing docstring here

load_model_from_json(folder, **kwargs)

Loads a model from a model.json file in the path given by folder. The model is load in self.model attribute.

Parameters:
folder : str

Path to the folder that contains model.json file

load_model_weights(weights_folder)

Loads self.model weights in weights_folder/best_weights.hdf5.

Parameters:
weights_folder : str

Path to save the weights file.

load_pretrained_model_weights(weights_folder='./pretrained_weights')

Loads pretrained weights to self.model weights.

Parameters:
weights_folder : str

Path to load the weights file

save_model_json(folder)

Saves the model to a model.json file in the given folder path.

Parameters:
folder : str

Path to the folder to save model.json file

save_model_weights(weights_folder)

Saves self.model weights in weights_folder/best_weights.hdf5.

Parameters:
weights_folder : str

Path to save the weights file

train(data_train, data_val, weights_path='./', optimizer='Adam', learning_rate=0.001, early_stopping=100, considered_improvement=0.01, losses='categorical_crossentropy', loss_weights=[1], sequence_time_sec=0.5, metric_resolution_sec=1.0, label_list=[], shuffle=True, **kwargs_keras_fit)

Trains the keras model using the data and paramaters of arguments.

Parameters:
X_train : ndarray

3D array with mel-spectrograms of train set. Shape = (N_instances, N_hops, N_mel_bands)

Y_train : ndarray

2D array with the annotations of train set (one hot encoding). Shape (N_instances, N_classes)

X_val : ndarray

3D array with mel-spectrograms of validation set. Shape = (N_instances, N_hops, N_mel_bands)

Y_val : ndarray

2D array with the annotations of validation set (one hot encoding). Shape (N_instances, N_classes)

weights_path : str

Path where to save the best weights of the model in the training process

weights_path : str

Path where to save log of the training process

loss_weights : list

List of weights for each loss function (‘categorical_crossentropy’, ‘mean_squared_error’, ‘prototype_loss’)

optimizer : str

Optimizer used to train the model

learning_rate : float

Learning rate used to train the model

batch_size : int

Batch size used in the training process

epochs : int

Number of training epochs

fit_verbose : int

Verbose mode for fit method of Keras model