#![allow(clippy::excessive_precision)]
use crate::Error;
use super::{Layer, LayerSpec, LinearSpec};
use crate::dnn::nnet::LinearLayer;
use crate::dnn::weights::WeightList;
pub const BLOB_FILE: &str = "nolace.bin";
pub const NOLACE_PREEMPH: f32 = 0.85;
pub const NOLACE_FRAME_SIZE: usize = 80;
pub const NOLACE_OVERLAP_SIZE: usize = 40;
pub const NOLACE_NUM_FEATURES: usize = 93;
pub const NOLACE_PITCH_MAX: usize = 300;
pub const NOLACE_PITCH_EMBEDDING_DIM: usize = 64;
pub const NOLACE_NUMBITS_RANGE_LOW: usize = 50;
pub const NOLACE_NUMBITS_RANGE_HIGH: usize = 650;
pub const NOLACE_NUMBITS_EMBEDDING_DIM: usize = 8;
pub const NOLACE_COND_DIM: usize = 160;
pub const NOLACE_HIDDEN_FEATURE_DIM: usize = 96;
pub const NOLACE_NUMBITS_SCALE_0: f32 = 1.0357311964035034;
pub const NOLACE_NUMBITS_SCALE_1: f32 = 1.735559105873108;
pub const NOLACE_NUMBITS_SCALE_2: f32 = 3.6004557609558105;
pub const NOLACE_NUMBITS_SCALE_3: f32 = 4.552478313446045;
pub const NOLACE_NUMBITS_SCALE_4: f32 = 5.932559490203857;
pub const NOLACE_NUMBITS_SCALE_5: f32 = 7.176970481872559;
pub const NOLACE_NUMBITS_SCALE_6: f32 = 8.114998817443848;
pub const NOLACE_NUMBITS_SCALE_7: f32 = 8.77063274383545;
pub const NOLACE_PITCH_EMBEDDING_OUT_SIZE: usize = 64;
pub const NOLACE_FNET_CONV1_OUT_SIZE: usize = 96;
pub const NOLACE_FNET_CONV1_IN_SIZE: usize = 173;
pub const NOLACE_FNET_CONV1_STATE_SIZE: usize = 0;
pub const NOLACE_FNET_CONV1_DELAY: usize = 0;
pub const NOLACE_FNET_CONV2_OUT_SIZE: usize = 160;
pub const NOLACE_FNET_CONV2_IN_SIZE: usize = 384;
pub const NOLACE_FNET_CONV2_STATE_SIZE: usize = 384;
pub const NOLACE_FNET_CONV2_DELAY: usize = 0;
pub const NOLACE_FNET_TCONV_KERNEL_SIZE: usize = 4;
pub const NOLACE_FNET_TCONV_STRIDE: usize = 4;
pub const NOLACE_FNET_TCONV_IN_CHANNELS: usize = 160;
pub const NOLACE_FNET_TCONV_OUT_CHANNELS: usize = 160;
pub const NOLACE_FNET_GRU_OUT_SIZE: usize = 160;
pub const NOLACE_FNET_GRU_STATE_SIZE: usize = 160;
pub const NOLACE_CF1_FILTER_GAIN_A: f32 = 0.690776;
pub const NOLACE_CF1_FILTER_GAIN_B: f32 = 0.000000;
pub const NOLACE_CF1_LOG_GAIN_LIMIT: f32 = 1.151293;
pub const NOLACE_CF1_KERNEL_SIZE: usize = 16;
pub const NOLACE_CF1_LEFT_PADDING: usize = 8;
pub const NOLACE_CF1_FRAME_SIZE: usize = 80;
pub const NOLACE_CF1_OVERLAP_SIZE: usize = 40;
pub const NOLACE_CF1_IN_CHANNELS: usize = 1;
pub const NOLACE_CF1_OUT_CHANNELS: usize = 1;
pub const NOLACE_CF1_NORM_P: usize = 2;
pub const NOLACE_CF1_FEATURE_DIM: usize = 160;
pub const NOLACE_CF1_MAX_LAG: usize = 301;
pub const NOLACE_CF1_KERNEL_OUT_SIZE: usize = 16;
pub const NOLACE_CF1_GAIN_OUT_SIZE: usize = 1;
pub const NOLACE_CF1_GLOBAL_GAIN_OUT_SIZE: usize = 1;
pub const NOLACE_CF2_FILTER_GAIN_A: f32 = 0.690776;
pub const NOLACE_CF2_FILTER_GAIN_B: f32 = 0.000000;
pub const NOLACE_CF2_LOG_GAIN_LIMIT: f32 = 1.151293;
pub const NOLACE_CF2_KERNEL_SIZE: usize = 16;
pub const NOLACE_CF2_LEFT_PADDING: usize = 8;
pub const NOLACE_CF2_FRAME_SIZE: usize = 80;
pub const NOLACE_CF2_OVERLAP_SIZE: usize = 40;
pub const NOLACE_CF2_IN_CHANNELS: usize = 1;
pub const NOLACE_CF2_OUT_CHANNELS: usize = 1;
pub const NOLACE_CF2_NORM_P: usize = 2;
pub const NOLACE_CF2_FEATURE_DIM: usize = 160;
pub const NOLACE_CF2_MAX_LAG: usize = 301;
pub const NOLACE_CF2_KERNEL_OUT_SIZE: usize = 16;
pub const NOLACE_CF2_GAIN_OUT_SIZE: usize = 1;
pub const NOLACE_CF2_GLOBAL_GAIN_OUT_SIZE: usize = 1;
pub const NOLACE_AF1_FILTER_GAIN_A: f32 = 1.381551;
pub const NOLACE_AF1_FILTER_GAIN_B: f32 = 0.000000;
pub const NOLACE_AF1_SHAPE_GAIN: f32 = 1.000000;
pub const NOLACE_AF1_KERNEL_SIZE: usize = 16;
pub const NOLACE_AF1_FRAME_SIZE: usize = 80;
pub const NOLACE_AF1_LEFT_PADDING: usize = 15;
pub const NOLACE_AF1_OVERLAP_SIZE: usize = 40;
pub const NOLACE_AF1_IN_CHANNELS: usize = 1;
pub const NOLACE_AF1_OUT_CHANNELS: usize = 2;
pub const NOLACE_AF1_NORM_P: usize = 2;
pub const NOLACE_AF1_FEATURE_DIM: usize = 160;
pub const NOLACE_AF1_KERNEL_OUT_SIZE: usize = 32;
pub const NOLACE_AF1_GAIN_OUT_SIZE: usize = 2;
pub const NOLACE_TDSHAPE1_FEATURE_DIM: usize = 160;
pub const NOLACE_TDSHAPE1_FRAME_SIZE: usize = 80;
pub const NOLACE_TDSHAPE1_AVG_POOL_K: usize = 4;
pub const NOLACE_TDSHAPE1_INNOVATE: usize = 0;
pub const NOLACE_TDSHAPE1_POOL_AFTER: usize = 0;
pub const NOLACE_TDSHAPE1_ALPHA1_F_OUT_SIZE: usize = 80;
pub const NOLACE_TDSHAPE1_ALPHA1_F_IN_SIZE: usize = 160;
pub const NOLACE_TDSHAPE1_ALPHA1_F_STATE_SIZE: usize = 160;
pub const NOLACE_TDSHAPE1_ALPHA1_F_DELAY: usize = 0;
pub const NOLACE_TDSHAPE1_ALPHA1_T_OUT_SIZE: usize = 80;
pub const NOLACE_TDSHAPE1_ALPHA1_T_IN_SIZE: usize = 21;
pub const NOLACE_TDSHAPE1_ALPHA1_T_STATE_SIZE: usize = 21;
pub const NOLACE_TDSHAPE1_ALPHA1_T_DELAY: usize = 0;
pub const NOLACE_TDSHAPE1_ALPHA2_OUT_SIZE: usize = 80;
pub const NOLACE_TDSHAPE1_ALPHA2_IN_SIZE: usize = 80;
pub const NOLACE_TDSHAPE1_ALPHA2_STATE_SIZE: usize = 80;
pub const NOLACE_TDSHAPE1_ALPHA2_DELAY: usize = 0;
pub const NOLACE_TDSHAPE2_FEATURE_DIM: usize = 160;
pub const NOLACE_TDSHAPE2_FRAME_SIZE: usize = 80;
pub const NOLACE_TDSHAPE2_AVG_POOL_K: usize = 4;
pub const NOLACE_TDSHAPE2_INNOVATE: usize = 0;
pub const NOLACE_TDSHAPE2_POOL_AFTER: usize = 0;
pub const NOLACE_TDSHAPE2_ALPHA1_F_OUT_SIZE: usize = 80;
pub const NOLACE_TDSHAPE2_ALPHA1_F_IN_SIZE: usize = 160;
pub const NOLACE_TDSHAPE2_ALPHA1_F_STATE_SIZE: usize = 160;
pub const NOLACE_TDSHAPE2_ALPHA1_F_DELAY: usize = 0;
pub const NOLACE_TDSHAPE2_ALPHA1_T_OUT_SIZE: usize = 80;
pub const NOLACE_TDSHAPE2_ALPHA1_T_IN_SIZE: usize = 21;
pub const NOLACE_TDSHAPE2_ALPHA1_T_STATE_SIZE: usize = 21;
pub const NOLACE_TDSHAPE2_ALPHA1_T_DELAY: usize = 0;
pub const NOLACE_TDSHAPE2_ALPHA2_OUT_SIZE: usize = 80;
pub const NOLACE_TDSHAPE2_ALPHA2_IN_SIZE: usize = 80;
pub const NOLACE_TDSHAPE2_ALPHA2_STATE_SIZE: usize = 80;
pub const NOLACE_TDSHAPE2_ALPHA2_DELAY: usize = 0;
pub const NOLACE_TDSHAPE3_FEATURE_DIM: usize = 160;
pub const NOLACE_TDSHAPE3_FRAME_SIZE: usize = 80;
pub const NOLACE_TDSHAPE3_AVG_POOL_K: usize = 4;
pub const NOLACE_TDSHAPE3_INNOVATE: usize = 0;
pub const NOLACE_TDSHAPE3_POOL_AFTER: usize = 0;
pub const NOLACE_TDSHAPE3_ALPHA1_F_OUT_SIZE: usize = 80;
pub const NOLACE_TDSHAPE3_ALPHA1_F_IN_SIZE: usize = 160;
pub const NOLACE_TDSHAPE3_ALPHA1_F_STATE_SIZE: usize = 160;
pub const NOLACE_TDSHAPE3_ALPHA1_F_DELAY: usize = 0;
pub const NOLACE_TDSHAPE3_ALPHA1_T_OUT_SIZE: usize = 80;
pub const NOLACE_TDSHAPE3_ALPHA1_T_IN_SIZE: usize = 21;
pub const NOLACE_TDSHAPE3_ALPHA1_T_STATE_SIZE: usize = 21;
pub const NOLACE_TDSHAPE3_ALPHA1_T_DELAY: usize = 0;
pub const NOLACE_TDSHAPE3_ALPHA2_OUT_SIZE: usize = 80;
pub const NOLACE_TDSHAPE3_ALPHA2_IN_SIZE: usize = 80;
pub const NOLACE_TDSHAPE3_ALPHA2_STATE_SIZE: usize = 80;
pub const NOLACE_TDSHAPE3_ALPHA2_DELAY: usize = 0;
pub const NOLACE_AF2_FILTER_GAIN_A: f32 = 1.381551;
pub const NOLACE_AF2_FILTER_GAIN_B: f32 = 0.000000;
pub const NOLACE_AF2_SHAPE_GAIN: f32 = 1.000000;
pub const NOLACE_AF2_KERNEL_SIZE: usize = 16;
pub const NOLACE_AF2_FRAME_SIZE: usize = 80;
pub const NOLACE_AF2_LEFT_PADDING: usize = 15;
pub const NOLACE_AF2_OVERLAP_SIZE: usize = 40;
pub const NOLACE_AF2_IN_CHANNELS: usize = 2;
pub const NOLACE_AF2_OUT_CHANNELS: usize = 2;
pub const NOLACE_AF2_NORM_P: usize = 2;
pub const NOLACE_AF2_FEATURE_DIM: usize = 160;
pub const NOLACE_AF2_KERNEL_OUT_SIZE: usize = 64;
pub const NOLACE_AF2_GAIN_OUT_SIZE: usize = 2;
pub const NOLACE_AF3_FILTER_GAIN_A: f32 = 1.381551;
pub const NOLACE_AF3_FILTER_GAIN_B: f32 = 0.000000;
pub const NOLACE_AF3_SHAPE_GAIN: f32 = 1.000000;
pub const NOLACE_AF3_KERNEL_SIZE: usize = 16;
pub const NOLACE_AF3_FRAME_SIZE: usize = 80;
pub const NOLACE_AF3_LEFT_PADDING: usize = 15;
pub const NOLACE_AF3_OVERLAP_SIZE: usize = 40;
pub const NOLACE_AF3_IN_CHANNELS: usize = 2;
pub const NOLACE_AF3_OUT_CHANNELS: usize = 2;
pub const NOLACE_AF3_NORM_P: usize = 2;
pub const NOLACE_AF3_FEATURE_DIM: usize = 160;
pub const NOLACE_AF3_KERNEL_OUT_SIZE: usize = 64;
pub const NOLACE_AF3_GAIN_OUT_SIZE: usize = 2;
pub const NOLACE_AF4_FILTER_GAIN_A: f32 = 1.381551;
pub const NOLACE_AF4_FILTER_GAIN_B: f32 = 0.000000;
pub const NOLACE_AF4_SHAPE_GAIN: f32 = 1.000000;
pub const NOLACE_AF4_KERNEL_SIZE: usize = 16;
pub const NOLACE_AF4_FRAME_SIZE: usize = 80;
pub const NOLACE_AF4_LEFT_PADDING: usize = 15;
pub const NOLACE_AF4_OVERLAP_SIZE: usize = 40;
pub const NOLACE_AF4_IN_CHANNELS: usize = 2;
pub const NOLACE_AF4_OUT_CHANNELS: usize = 1;
pub const NOLACE_AF4_NORM_P: usize = 2;
pub const NOLACE_AF4_FEATURE_DIM: usize = 160;
pub const NOLACE_AF4_KERNEL_OUT_SIZE: usize = 32;
pub const NOLACE_AF4_GAIN_OUT_SIZE: usize = 1;
pub const NOLACE_POST_CF1_OUT_SIZE: usize = 160;
pub const NOLACE_POST_CF1_IN_SIZE: usize = 160;
pub const NOLACE_POST_CF1_STATE_SIZE: usize = 160;
pub const NOLACE_POST_CF1_DELAY: usize = 0;
pub const NOLACE_POST_CF2_OUT_SIZE: usize = 160;
pub const NOLACE_POST_CF2_IN_SIZE: usize = 160;
pub const NOLACE_POST_CF2_STATE_SIZE: usize = 160;
pub const NOLACE_POST_CF2_DELAY: usize = 0;
pub const NOLACE_POST_AF1_OUT_SIZE: usize = 160;
pub const NOLACE_POST_AF1_IN_SIZE: usize = 160;
pub const NOLACE_POST_AF1_STATE_SIZE: usize = 160;
pub const NOLACE_POST_AF1_DELAY: usize = 0;
pub const NOLACE_POST_AF2_OUT_SIZE: usize = 160;
pub const NOLACE_POST_AF2_IN_SIZE: usize = 160;
pub const NOLACE_POST_AF2_STATE_SIZE: usize = 160;
pub const NOLACE_POST_AF2_DELAY: usize = 0;
pub const NOLACE_POST_AF3_OUT_SIZE: usize = 160;
pub const NOLACE_POST_AF3_IN_SIZE: usize = 160;
pub const NOLACE_POST_AF3_STATE_SIZE: usize = 160;
pub const NOLACE_POST_AF3_DELAY: usize = 0;
pub const LAYERS: [LayerSpec; 34] = [
LayerSpec::Linear(LinearSpec {
name: "nolace_pitch_embedding",
bias: Some("nolace_pitch_embedding_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_pitch_embedding_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 301,
nb_outputs: 64,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_fnet_conv1",
bias: Some("nolace_fnet_conv1_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_fnet_conv1_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 173,
nb_outputs: 96,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_fnet_conv2",
bias: Some("nolace_fnet_conv2_bias"),
subias: Some("nolace_fnet_conv2_subias"),
weights: Some("nolace_fnet_conv2_weights_int8"),
float_weights: Some("nolace_fnet_conv2_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_fnet_conv2_scale"),
nb_inputs: 768,
nb_outputs: 160,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_fnet_tconv",
bias: Some("nolace_fnet_tconv_bias"),
subias: Some("nolace_fnet_tconv_subias"),
weights: Some("nolace_fnet_tconv_weights_int8"),
float_weights: Some("nolace_fnet_tconv_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_fnet_tconv_scale"),
nb_inputs: 160,
nb_outputs: 640,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_fnet_gru_input",
bias: Some("nolace_fnet_gru_input_bias"),
subias: Some("nolace_fnet_gru_input_subias"),
weights: Some("nolace_fnet_gru_input_weights_int8"),
float_weights: Some("nolace_fnet_gru_input_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_fnet_gru_input_scale"),
nb_inputs: 160,
nb_outputs: 480,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_fnet_gru_recurrent",
bias: Some("nolace_fnet_gru_recurrent_bias"),
subias: Some("nolace_fnet_gru_recurrent_subias"),
weights: Some("nolace_fnet_gru_recurrent_weights_int8"),
float_weights: Some("nolace_fnet_gru_recurrent_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_fnet_gru_recurrent_scale"),
nb_inputs: 160,
nb_outputs: 480,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_cf1_kernel",
bias: Some("nolace_cf1_kernel_bias"),
subias: Some("nolace_cf1_kernel_subias"),
weights: Some("nolace_cf1_kernel_weights_int8"),
float_weights: Some("nolace_cf1_kernel_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_cf1_kernel_scale"),
nb_inputs: 160,
nb_outputs: 16,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_cf1_gain",
bias: Some("nolace_cf1_gain_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_cf1_gain_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 160,
nb_outputs: 1,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_cf1_global_gain",
bias: Some("nolace_cf1_global_gain_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_cf1_global_gain_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 160,
nb_outputs: 1,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_cf2_kernel",
bias: Some("nolace_cf2_kernel_bias"),
subias: Some("nolace_cf2_kernel_subias"),
weights: Some("nolace_cf2_kernel_weights_int8"),
float_weights: Some("nolace_cf2_kernel_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_cf2_kernel_scale"),
nb_inputs: 160,
nb_outputs: 16,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_cf2_gain",
bias: Some("nolace_cf2_gain_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_cf2_gain_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 160,
nb_outputs: 1,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_cf2_global_gain",
bias: Some("nolace_cf2_global_gain_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_cf2_global_gain_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 160,
nb_outputs: 1,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_af1_kernel",
bias: Some("nolace_af1_kernel_bias"),
subias: Some("nolace_af1_kernel_subias"),
weights: Some("nolace_af1_kernel_weights_int8"),
float_weights: Some("nolace_af1_kernel_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_af1_kernel_scale"),
nb_inputs: 160,
nb_outputs: 32,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_af1_gain",
bias: Some("nolace_af1_gain_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_af1_gain_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 160,
nb_outputs: 2,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_tdshape1_alpha1_f",
bias: Some("nolace_tdshape1_alpha1_f_bias"),
subias: Some("nolace_tdshape1_alpha1_f_subias"),
weights: Some("nolace_tdshape1_alpha1_f_weights_int8"),
float_weights: Some("nolace_tdshape1_alpha1_f_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_tdshape1_alpha1_f_scale"),
nb_inputs: 320,
nb_outputs: 80,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_tdshape1_alpha1_t",
bias: Some("nolace_tdshape1_alpha1_t_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_tdshape1_alpha1_t_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 42,
nb_outputs: 80,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_tdshape1_alpha2",
bias: Some("nolace_tdshape1_alpha2_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_tdshape1_alpha2_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 160,
nb_outputs: 80,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_tdshape2_alpha1_f",
bias: Some("nolace_tdshape2_alpha1_f_bias"),
subias: Some("nolace_tdshape2_alpha1_f_subias"),
weights: Some("nolace_tdshape2_alpha1_f_weights_int8"),
float_weights: Some("nolace_tdshape2_alpha1_f_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_tdshape2_alpha1_f_scale"),
nb_inputs: 320,
nb_outputs: 80,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_tdshape2_alpha1_t",
bias: Some("nolace_tdshape2_alpha1_t_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_tdshape2_alpha1_t_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 42,
nb_outputs: 80,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_tdshape2_alpha2",
bias: Some("nolace_tdshape2_alpha2_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_tdshape2_alpha2_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 160,
nb_outputs: 80,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_tdshape3_alpha1_f",
bias: Some("nolace_tdshape3_alpha1_f_bias"),
subias: Some("nolace_tdshape3_alpha1_f_subias"),
weights: Some("nolace_tdshape3_alpha1_f_weights_int8"),
float_weights: Some("nolace_tdshape3_alpha1_f_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_tdshape3_alpha1_f_scale"),
nb_inputs: 320,
nb_outputs: 80,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_tdshape3_alpha1_t",
bias: Some("nolace_tdshape3_alpha1_t_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_tdshape3_alpha1_t_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 42,
nb_outputs: 80,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_tdshape3_alpha2",
bias: Some("nolace_tdshape3_alpha2_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_tdshape3_alpha2_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 160,
nb_outputs: 80,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_af2_kernel",
bias: Some("nolace_af2_kernel_bias"),
subias: Some("nolace_af2_kernel_subias"),
weights: Some("nolace_af2_kernel_weights_int8"),
float_weights: Some("nolace_af2_kernel_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_af2_kernel_scale"),
nb_inputs: 160,
nb_outputs: 64,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_af2_gain",
bias: Some("nolace_af2_gain_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_af2_gain_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 160,
nb_outputs: 2,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_af3_kernel",
bias: Some("nolace_af3_kernel_bias"),
subias: Some("nolace_af3_kernel_subias"),
weights: Some("nolace_af3_kernel_weights_int8"),
float_weights: Some("nolace_af3_kernel_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_af3_kernel_scale"),
nb_inputs: 160,
nb_outputs: 64,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_af3_gain",
bias: Some("nolace_af3_gain_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_af3_gain_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 160,
nb_outputs: 2,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_af4_kernel",
bias: Some("nolace_af4_kernel_bias"),
subias: Some("nolace_af4_kernel_subias"),
weights: Some("nolace_af4_kernel_weights_int8"),
float_weights: Some("nolace_af4_kernel_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_af4_kernel_scale"),
nb_inputs: 160,
nb_outputs: 32,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_af4_gain",
bias: Some("nolace_af4_gain_bias"),
subias: None,
weights: None,
float_weights: Some("nolace_af4_gain_weights_float"),
weights_idx: None,
diag: None,
scale: None,
nb_inputs: 160,
nb_outputs: 1,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_post_cf1",
bias: Some("nolace_post_cf1_bias"),
subias: Some("nolace_post_cf1_subias"),
weights: Some("nolace_post_cf1_weights_int8"),
float_weights: Some("nolace_post_cf1_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_post_cf1_scale"),
nb_inputs: 320,
nb_outputs: 160,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_post_cf2",
bias: Some("nolace_post_cf2_bias"),
subias: Some("nolace_post_cf2_subias"),
weights: Some("nolace_post_cf2_weights_int8"),
float_weights: Some("nolace_post_cf2_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_post_cf2_scale"),
nb_inputs: 320,
nb_outputs: 160,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_post_af1",
bias: Some("nolace_post_af1_bias"),
subias: Some("nolace_post_af1_subias"),
weights: Some("nolace_post_af1_weights_int8"),
float_weights: Some("nolace_post_af1_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_post_af1_scale"),
nb_inputs: 320,
nb_outputs: 160,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_post_af2",
bias: Some("nolace_post_af2_bias"),
subias: Some("nolace_post_af2_subias"),
weights: Some("nolace_post_af2_weights_int8"),
float_weights: Some("nolace_post_af2_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_post_af2_scale"),
nb_inputs: 320,
nb_outputs: 160,
}),
LayerSpec::Linear(LinearSpec {
name: "nolace_post_af3",
bias: Some("nolace_post_af3_bias"),
subias: Some("nolace_post_af3_subias"),
weights: Some("nolace_post_af3_weights_int8"),
float_weights: Some("nolace_post_af3_weights_float"),
weights_idx: None,
diag: None,
scale: Some("nolace_post_af3_scale"),
nb_inputs: 320,
nb_outputs: 160,
}),
];
#[derive(Clone, Copy, Default)]
pub struct NolaceLayers<'w> {
pub nolace_pitch_embedding: LinearLayer<'w>,
pub nolace_fnet_conv1: LinearLayer<'w>,
pub nolace_fnet_conv2: LinearLayer<'w>,
pub nolace_fnet_tconv: LinearLayer<'w>,
pub nolace_fnet_gru_input: LinearLayer<'w>,
pub nolace_fnet_gru_recurrent: LinearLayer<'w>,
pub nolace_cf1_kernel: LinearLayer<'w>,
pub nolace_cf1_gain: LinearLayer<'w>,
pub nolace_cf1_global_gain: LinearLayer<'w>,
pub nolace_cf2_kernel: LinearLayer<'w>,
pub nolace_cf2_gain: LinearLayer<'w>,
pub nolace_cf2_global_gain: LinearLayer<'w>,
pub nolace_af1_kernel: LinearLayer<'w>,
pub nolace_af1_gain: LinearLayer<'w>,
pub nolace_tdshape1_alpha1_f: LinearLayer<'w>,
pub nolace_tdshape1_alpha1_t: LinearLayer<'w>,
pub nolace_tdshape1_alpha2: LinearLayer<'w>,
pub nolace_tdshape2_alpha1_f: LinearLayer<'w>,
pub nolace_tdshape2_alpha1_t: LinearLayer<'w>,
pub nolace_tdshape2_alpha2: LinearLayer<'w>,
pub nolace_tdshape3_alpha1_f: LinearLayer<'w>,
pub nolace_tdshape3_alpha1_t: LinearLayer<'w>,
pub nolace_tdshape3_alpha2: LinearLayer<'w>,
pub nolace_af2_kernel: LinearLayer<'w>,
pub nolace_af2_gain: LinearLayer<'w>,
pub nolace_af3_kernel: LinearLayer<'w>,
pub nolace_af3_gain: LinearLayer<'w>,
pub nolace_af4_kernel: LinearLayer<'w>,
pub nolace_af4_gain: LinearLayer<'w>,
pub nolace_post_cf1: LinearLayer<'w>,
pub nolace_post_cf2: LinearLayer<'w>,
pub nolace_post_af1: LinearLayer<'w>,
pub nolace_post_af2: LinearLayer<'w>,
pub nolace_post_af3: LinearLayer<'w>,
}
impl<'w> NolaceLayers<'w> {
pub fn init(list: &WeightList<'w>) -> Result<Self, Error> {
Ok(NolaceLayers {
nolace_pitch_embedding: LAYERS[0].linear(list)?,
nolace_fnet_conv1: LAYERS[1].linear(list)?,
nolace_fnet_conv2: LAYERS[2].linear(list)?,
nolace_fnet_tconv: LAYERS[3].linear(list)?,
nolace_fnet_gru_input: LAYERS[4].linear(list)?,
nolace_fnet_gru_recurrent: LAYERS[5].linear(list)?,
nolace_cf1_kernel: LAYERS[6].linear(list)?,
nolace_cf1_gain: LAYERS[7].linear(list)?,
nolace_cf1_global_gain: LAYERS[8].linear(list)?,
nolace_cf2_kernel: LAYERS[9].linear(list)?,
nolace_cf2_gain: LAYERS[10].linear(list)?,
nolace_cf2_global_gain: LAYERS[11].linear(list)?,
nolace_af1_kernel: LAYERS[12].linear(list)?,
nolace_af1_gain: LAYERS[13].linear(list)?,
nolace_tdshape1_alpha1_f: LAYERS[14].linear(list)?,
nolace_tdshape1_alpha1_t: LAYERS[15].linear(list)?,
nolace_tdshape1_alpha2: LAYERS[16].linear(list)?,
nolace_tdshape2_alpha1_f: LAYERS[17].linear(list)?,
nolace_tdshape2_alpha1_t: LAYERS[18].linear(list)?,
nolace_tdshape2_alpha2: LAYERS[19].linear(list)?,
nolace_tdshape3_alpha1_f: LAYERS[20].linear(list)?,
nolace_tdshape3_alpha1_t: LAYERS[21].linear(list)?,
nolace_tdshape3_alpha2: LAYERS[22].linear(list)?,
nolace_af2_kernel: LAYERS[23].linear(list)?,
nolace_af2_gain: LAYERS[24].linear(list)?,
nolace_af3_kernel: LAYERS[25].linear(list)?,
nolace_af3_gain: LAYERS[26].linear(list)?,
nolace_af4_kernel: LAYERS[27].linear(list)?,
nolace_af4_gain: LAYERS[28].linear(list)?,
nolace_post_cf1: LAYERS[29].linear(list)?,
nolace_post_cf2: LAYERS[30].linear(list)?,
nolace_post_af1: LAYERS[31].linear(list)?,
nolace_post_af2: LAYERS[32].linear(list)?,
nolace_post_af3: LAYERS[33].linear(list)?,
})
}
pub fn layers(&self) -> [Layer<'_, 'w>; 34] {
[
Layer::Linear(&self.nolace_pitch_embedding),
Layer::Linear(&self.nolace_fnet_conv1),
Layer::Linear(&self.nolace_fnet_conv2),
Layer::Linear(&self.nolace_fnet_tconv),
Layer::Linear(&self.nolace_fnet_gru_input),
Layer::Linear(&self.nolace_fnet_gru_recurrent),
Layer::Linear(&self.nolace_cf1_kernel),
Layer::Linear(&self.nolace_cf1_gain),
Layer::Linear(&self.nolace_cf1_global_gain),
Layer::Linear(&self.nolace_cf2_kernel),
Layer::Linear(&self.nolace_cf2_gain),
Layer::Linear(&self.nolace_cf2_global_gain),
Layer::Linear(&self.nolace_af1_kernel),
Layer::Linear(&self.nolace_af1_gain),
Layer::Linear(&self.nolace_tdshape1_alpha1_f),
Layer::Linear(&self.nolace_tdshape1_alpha1_t),
Layer::Linear(&self.nolace_tdshape1_alpha2),
Layer::Linear(&self.nolace_tdshape2_alpha1_f),
Layer::Linear(&self.nolace_tdshape2_alpha1_t),
Layer::Linear(&self.nolace_tdshape2_alpha2),
Layer::Linear(&self.nolace_tdshape3_alpha1_f),
Layer::Linear(&self.nolace_tdshape3_alpha1_t),
Layer::Linear(&self.nolace_tdshape3_alpha2),
Layer::Linear(&self.nolace_af2_kernel),
Layer::Linear(&self.nolace_af2_gain),
Layer::Linear(&self.nolace_af3_kernel),
Layer::Linear(&self.nolace_af3_gain),
Layer::Linear(&self.nolace_af4_kernel),
Layer::Linear(&self.nolace_af4_gain),
Layer::Linear(&self.nolace_post_cf1),
Layer::Linear(&self.nolace_post_cf2),
Layer::Linear(&self.nolace_post_af1),
Layer::Linear(&self.nolace_post_af2),
Layer::Linear(&self.nolace_post_af3),
]
}
}