/*This file is automatically generated from a Keras model*/

#ifndef RNN_DATA_H
#define RNN_DATA_H

#include "nnet.h"

#define GRU_A_EMBED_SIG_OUT_SIZE 1152
extern EmbeddingLayer gru_a_embed_sig;

#define GRU_A_EMBED_PRED_OUT_SIZE 1152
extern EmbeddingLayer gru_a_embed_pred;

#define GRU_A_EMBED_EXC_OUT_SIZE 1152
extern EmbeddingLayer gru_a_embed_exc;

#define GRU_A_DENSE_FEATURE_OUT_SIZE 1152
extern DenseLayer gru_a_dense_feature;

#define EMBED_PITCH_OUT_SIZE 64
extern EmbeddingLayer embed_pitch;

#define FEATURE_CONV1_OUT_SIZE 128
#define FEATURE_CONV1_STATE_SIZE (102*2)
#define FEATURE_CONV1_DELAY 1
extern Conv1DLayer feature_conv1;

#define FEATURE_CONV2_OUT_SIZE 128
#define FEATURE_CONV2_STATE_SIZE (128*2)
#define FEATURE_CONV2_DELAY 1
extern Conv1DLayer feature_conv2;

#define FEATURE_DENSE1_OUT_SIZE 128
extern DenseLayer feature_dense1;

#define EMBED_SIG_OUT_SIZE 128
extern EmbeddingLayer embed_sig;

#define FEATURE_DENSE2_OUT_SIZE 128
extern DenseLayer feature_dense2;

#define GRU_A_OUT_SIZE 384
#define GRU_A_STATE_SIZE 384
extern GRULayer gru_a;

#define GRU_B_OUT_SIZE 16
#define GRU_B_STATE_SIZE 16
extern GRULayer gru_b;

#define DUAL_FC_OUT_SIZE 256
extern MDenseLayer dual_fc;

#define SPARSE_GRU_A_OUT_SIZE 384
#define SPARSE_GRU_A_STATE_SIZE 384
extern SparseGRULayer sparse_gru_a;

#define MAX_RNN_NEURONS 384

#define MAX_CONV_INPUTS 384

#define MAX_MDENSE_TMP 512

typedef struct {
  float feature_conv1_state[FEATURE_CONV1_STATE_SIZE];
  float feature_conv2_state[FEATURE_CONV2_STATE_SIZE];
  float gru_a_state[GRU_A_STATE_SIZE];
  float gru_b_state[GRU_B_STATE_SIZE];
} NNetState;


#endif
