pub const A2_NUM_LAYERS: usize = 23;
pub const A2_HEAD_KERNEL_SIZE: usize = 16;
pub const A2_LEAKY_SLOPE: f32 = 0.01;
pub const A2_KERNEL_SIZES: [usize; 23] = [
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 15, 15, 6, 6, 6, 6, 6, 6, 6,
];
pub const A2_DILATIONS: [usize; 23] = [
1, 3, 7, 17, 41, 101, 239, 1, 3, 7, 17, 41, 101, 239, 1, 13, 1, 3, 7, 17, 41, 101, 239,
];
pub const A2_VALID_CHANNELS: [u8; 2] = [3, 8];
use super::activations::ActivationType;
use super::film::FiLMConfig;
use super::gating::GatingMode;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Head1x1Params {
pub active: bool,
pub out_channels: usize,
pub groups: u32,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Layer1x1Params {
pub active: bool,
pub groups: u32,
}
#[derive(Debug, Clone, PartialEq)]
pub struct LayerParamsA2 {
pub condition_size: usize,
pub channels: usize,
pub bottleneck: usize,
pub kernel_size: usize,
pub dilation: usize,
pub activation: ActivationType,
pub gating_mode: GatingMode,
pub groups_input: u32,
pub groups_input_mixin: u32,
pub layer1x1: Layer1x1Params,
pub head1x1: Head1x1Params,
pub secondary_activation: ActivationType,
pub conv_pre_film: FiLMConfig,
pub conv_post_film: FiLMConfig,
pub input_mixin_pre_film: FiLMConfig,
pub input_mixin_post_film: FiLMConfig,
pub activation_pre_film: FiLMConfig,
pub activation_post_film: FiLMConfig,
pub layer1x1_post_film: FiLMConfig,
pub head1x1_post_film: FiLMConfig,
}
#[derive(Debug, Clone, PartialEq)]
pub struct LayerArrayParamsA2 {
pub input_size: usize,
pub condition_size: usize,
pub head_size: usize,
pub head_kernel_size: usize,
pub channels: usize,
pub bottleneck: usize,
pub kernel_sizes: Vec<usize>,
pub dilations: Vec<usize>,
pub activations: Vec<ActivationType>,
pub gating_modes: Vec<GatingMode>,
pub head_bias: bool,
pub groups_input: u32,
pub groups_input_mixin: u32,
pub layer1x1: Layer1x1Params,
pub head1x1: Head1x1Params,
pub secondary_activations: Vec<ActivationType>,
pub conv_pre_film: FiLMConfig,
pub conv_post_film: FiLMConfig,
pub input_mixin_pre_film: FiLMConfig,
pub input_mixin_post_film: FiLMConfig,
pub activation_pre_film: FiLMConfig,
pub activation_post_film: FiLMConfig,
pub layer1x1_post_film: FiLMConfig,
pub head1x1_post_film: FiLMConfig,
}
#[derive(Debug, Clone, PartialEq)]
pub struct HeadParams {
pub in_channels: usize,
pub channels: usize,
pub out_channels: usize,
pub kernel_sizes: Vec<usize>,
pub activation: ActivationType,
}
#[cfg(test)]
#[path = "params_test.rs"]
mod tests;