From 6a9831a6b038638266165dc1e9f115678f0b330e Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <jmvalin@jmvalin.ca> Date: Thu, 18 Jan 2024 18:16:54 -0500 Subject: [PATCH] Remove run-time code for old TF2 models No longer needed now that PLC is trained with PyTorch stack --- dnn/nnet.c | 72 -------------------------------------- dnn/nnet.h | 63 --------------------------------- dnn/parse_lpcnet_weights.c | 40 --------------------- 3 files changed, 175 deletions(-) diff --git a/dnn/nnet.c b/dnn/nnet.c index 3275b534e..8ac4518e4 100644 --- a/dnn/nnet.c +++ b/dnn/nnet.c @@ -115,78 +115,6 @@ void compute_glu(const LinearLayer *layer, float *output, const float *input, in } } -void _lpcnet_compute_dense(const DenseLayer *layer, float *output, const float *input, int arch) -{ - LinearLayer matrix; - celt_assert(input != output); - matrix.bias = layer->bias; - matrix.subias = NULL; - matrix.float_weights = layer->input_weights; - matrix.weights = NULL; - matrix.weights_idx = NULL; - matrix.diag = NULL; - matrix.nb_inputs = layer->nb_inputs; - matrix.nb_outputs = layer->nb_neurons; - matrix.scale = NULL; - compute_linear(&matrix, output, input, arch); - compute_activation(output, output, layer->nb_neurons, layer->activation, arch); -} - -#ifdef USE_SU_BIAS -#define bias_type subias -#else -#define bias_type bias -#endif -#define MAX_IDX_SIZE 8192 - -void compute_gruB(const GRULayer *gru, const float* gru_b_condition, float *state, const float *input, int arch) -{ - LinearLayer in_matrix, rec_matrix; - int i, M, N; - float bias[3*MAX_RNN_NEURONS_ALL]; - float scale[3*MAX_RNN_NEURONS_ALL]; - M = gru->nb_inputs; - N = gru->nb_neurons; - - in_matrix.bias = bias; - in_matrix.diag = NULL; - in_matrix.nb_inputs = M; - in_matrix.nb_outputs = 3*N; - in_matrix.subias = bias; -#ifdef DISABLE_DOT_PROD - for (i=0;i<3*N;i++) bias[i] = gru->bias[i] + gru_b_condition[i]; - in_matrix.scale = NULL; - in_matrix.float_weights = gru->input_weights; - in_matrix.weights = NULL; -#else - for (i=0;i<3*N;i++) bias[i] = gru->bias_type[i] + gru_b_condition[i]; - for (i=0;i<3*N;i++) scale[i] = SCALE_1; - in_matrix.scale = scale; - in_matrix.weights = gru->input_weights; - in_matrix.float_weights = NULL; -#endif - in_matrix.weights_idx = gru->input_weights_idx; - - rec_matrix.bias = &gru->bias[3*N]; - rec_matrix.diag = NULL; - rec_matrix.nb_inputs = N; - rec_matrix.nb_outputs = 3*N; - rec_matrix.scale = scale; - rec_matrix.subias = &gru->subias[3*N]; -#ifdef DISABLE_DOT_PROD - rec_matrix.scale = NULL; - rec_matrix.float_weights = gru->recurrent_weights; - rec_matrix.weights = NULL; -#else - rec_matrix.scale = scale; - rec_matrix.weights = gru->recurrent_weights; - rec_matrix.float_weights = NULL; -#endif - rec_matrix.weights_idx = NULL; - compute_generic_gru(&in_matrix, &rec_matrix, state, input, arch); -} - - #define MAX_CONV_INPUTS_ALL DRED_MAX_CONV_INPUTS void compute_generic_conv1d(const LinearLayer *layer, float *output, float *mem, const float *input, int input_size, int activation, int arch) diff --git a/dnn/nnet.h b/dnn/nnet.h index 589458a6e..2531489c8 100644 --- a/dnn/nnet.h +++ b/dnn/nnet.h @@ -31,13 +31,6 @@ #include <stddef.h> #include "opus_types.h" -#ifdef DISABLE_DOT_PROD -typedef float qweight; -#else -typedef signed char qweight; -#define DOT_PROD -#endif - #define ACTIVATION_LINEAR 0 #define ACTIVATION_SIGMOID 1 #define ACTIVATION_TANH 2 @@ -91,40 +84,6 @@ typedef struct { int kheight; } Conv2dLayer; -typedef struct { - const float *bias; - const float *input_weights; - int nb_inputs; - int nb_neurons; - int activation; -} DenseLayer; - -typedef struct { - const float *bias; - const float *subias; - const qweight *input_weights; - const int *input_weights_idx; - const qweight *recurrent_weights; - int nb_inputs; - int nb_neurons; - int activation; - int reset_after; -} GRULayer; - -typedef struct { - const float *bias; - const float *input_weights; - int nb_inputs; - int kernel_size; - int nb_neurons; - int activation; -} Conv1DLayer; - -typedef struct { - const float *embedding_weights; - int nb_inputs; - int dim; -} EmbeddingLayer; void compute_generic_dense(const LinearLayer *layer, float *output, const float *input, int activation, int arch); void compute_generic_gru(const LinearLayer *input_weights, const LinearLayer *recurrent_weights, float *state, const float *in, int arch); @@ -134,10 +93,6 @@ void compute_glu(const LinearLayer *layer, float *output, const float *input, in void compute_gated_activation(const LinearLayer *layer, float *output, const float *input, int activation, int arch); -void _lpcnet_compute_dense(const DenseLayer *layer, float *output, const float *input, int arch); - -void compute_gruB(const GRULayer *gru, const float* gru_b_condition, float *state, const float *input, int arch); - int parse_weights(WeightArray **list, const unsigned char *data, int len); @@ -169,24 +124,6 @@ int conv2d_init(Conv2dLayer *layer, const WeightArray *arrays, int ktime, int kheight); -int dense_init(DenseLayer *layer, const WeightArray *arrays, - const char *bias, - const char *input_weights, - int nb_inputs, - int nb_neurons, - int activation); - -int gru_init(GRULayer *layer, const WeightArray *arrays, - const char *bias, - const char *subias, - const char *input_weights, - const char *input_weights_idx, - const char *recurrent_weights, - int nb_inputs, - int nb_neurons, - int activation, - int reset_after); - void compute_linear_c(const LinearLayer *linear, float *out, const float *in); void compute_activation_c(float *output, const float *input, int N, int activation); diff --git a/dnn/parse_lpcnet_weights.c b/dnn/parse_lpcnet_weights.c index c21085933..987fc7170 100644 --- a/dnn/parse_lpcnet_weights.c +++ b/dnn/parse_lpcnet_weights.c @@ -176,46 +176,6 @@ int linear_init(LinearLayer *layer, const WeightArray *arrays, return 0; } - -int dense_init(DenseLayer *layer, const WeightArray *arrays, - const char *bias, - const char *input_weights, - int nb_inputs, - int nb_neurons, - int activation) -{ - if ((layer->bias = find_array_check(arrays, bias, nb_neurons*sizeof(layer->bias[0]))) == NULL) return 1; - if ((layer->input_weights = find_array_check(arrays, input_weights, nb_inputs*nb_neurons*sizeof(layer->input_weights[0]))) == NULL) return 1; - layer->nb_inputs = nb_inputs; - layer->nb_neurons = nb_neurons; - layer->activation = activation; - return 0; -} - -int gru_init(GRULayer *layer, const WeightArray *arrays, - const char *bias, - const char *subias, - const char *input_weights, - const char *input_weights_idx, - const char *recurrent_weights, - int nb_inputs, - int nb_neurons, - int activation, - int reset_after) -{ - int total_blocks; - if ((layer->bias = find_array_check(arrays, bias, 6*nb_neurons*sizeof(layer->bias[0]))) == NULL) return 1; - if ((layer->subias = find_array_check(arrays, subias, 6*nb_neurons*sizeof(layer->subias[0]))) == NULL) return 1; - if ((layer->input_weights_idx = find_idx_check(arrays, input_weights_idx, nb_inputs, 3*nb_neurons, &total_blocks)) == NULL) return 1; - if ((layer->input_weights = find_array_check(arrays, input_weights, SPARSE_BLOCK_SIZE*total_blocks*sizeof(layer->input_weights[0]))) == NULL) return 1; - if ((layer->recurrent_weights = find_array_check(arrays, recurrent_weights, 3*nb_neurons*nb_neurons*sizeof(layer->recurrent_weights[0]))) == NULL) return 1; - layer->nb_inputs = nb_inputs; - layer->nb_neurons = nb_neurons; - layer->activation = activation; - layer->reset_after = reset_after; - return 0; -} - int conv2d_init(Conv2dLayer *layer, const WeightArray *arrays, const char *bias, const char *float_weights, -- GitLab