From b3abc616661a9a528d98e7efce31faa0988517ba Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin Date: Fri, 4 Aug 2017 01:56:11 -0400 Subject: automate header generation too --- src/rnn.c | 40 +++++++++++++++------------------------- src/rnn.h | 6 +++--- 2 files changed, 18 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/rnn.c b/src/rnn.c index 6fb8286..d8c7c6e 100644 --- a/src/rnn.c +++ b/src/rnn.c @@ -35,6 +35,7 @@ #include "arch.h" #include "tansig_table.h" #include "rnn.h" +#include "rnn_data.h" #include static OPUS_INLINE float tansig_approx(float x) @@ -91,13 +92,13 @@ void compute_dense(const DenseLayer *layer, float *output, const float *input) sum += layer->input_weights[j*stride + i]*input[j]; output[i] = WEIGHTS_SCALE*sum; } - if (layer->activation == activation_sigmoid) { + if (layer->activation == ACTIVATION_SIGMOID) { for (i=0;iactivation == activation_tanh) { + } else if (layer->activation == ACTIVATION_TANH) { for (i=0;iactivation == activation_relu) { + } else if (layer->activation == ACTIVATION_RELU) { for (i=0;iinput_weights[2*N + j*stride + i]*input[j]; for (j=0;jrecurrent_weights[2*N + j*stride + i]*state[j]*r[j]; - if (gru->activation == activation_sigmoid) sum = sigmoid_approx(WEIGHTS_SCALE*sum); - else if (gru->activation == activation_tanh) sum = tansig_approx(WEIGHTS_SCALE*sum); - else if (gru->activation == activation_relu) sum = relu(WEIGHTS_SCALE*sum); + if (gru->activation == ACTIVATION_SIGMOID) sum = sigmoid_approx(WEIGHTS_SCALE*sum); + else if (gru->activation == ACTIVATION_TANH) sum = tansig_approx(WEIGHTS_SCALE*sum); + else if (gru->activation == ACTIVATION_RELU) sum = relu(WEIGHTS_SCALE*sum); else *(int*)0=0; h[i] = z[i]*state[i] + (1-z[i])*sum; } @@ -156,17 +157,6 @@ void compute_gru(const GRULayer *gru, float *state, const float *input) #if 1 #define INPUT_SIZE 42 -#define DENSE_SIZE 12 -#define VAD_SIZE 12 -#define NOISE_SIZE 48 -#define DENOISE_SIZE 128 - -extern const DenseLayer input_dense; -extern const GRULayer vad_gru; -extern const GRULayer noise_gru; -extern const GRULayer denoise_gru; -extern const DenseLayer denoise_output; -extern const DenseLayer vad_output; int main() { float vad_state[MAX_NEURONS] = {0}; @@ -175,8 +165,8 @@ int main() { float dense_out[MAX_NEURONS]; float noise_input[MAX_NEURONS*3]; float denoise_input[MAX_NEURONS*3]; - float noise_state[MAX_NEURONS] = {0}; - float denoise_state[MAX_NEURONS] = {0}; + float noise_state[NOISE_GRU_SIZE] = {0}; + float denoise_state[DENOISE_GRU_SIZE] = {0}; float gains[22]; while (1) { @@ -188,14 +178,14 @@ int main() { compute_gru(&vad_gru, vad_state, dense_out); compute_dense(&vad_output, vad_out, vad_state); #if 1 - for (i=0;i