(name: String, ctx: &Context)
| 58 | #[async_trait] |
| 59 | impl Forwarder for ZipformerBlock { |
| 60 | fn load(name: String, ctx: &Context) -> Result<Box<Self>> { |
| 61 | let luxtts_config = Self::load_luxtts_config(ctx)?; |
| 62 | let flat_idx = Self::layer_index(&name); |
| 63 | let (stack_idx, _layer_in_stack) = luxtts_config.flat_to_stack(flat_idx); |
| 64 | |
| 65 | let m = &luxtts_config.model; |
| 66 | let dim = m.fm_decoder_dim; |
| 67 | let ff_dim = m.fm_decoder_feedforward_dim; |
| 68 | let num_heads = m.fm_decoder_num_heads; |
| 69 | let cnn_kernel = m.fm_decoder_cnn_module_kernel[stack_idx]; |
| 70 | |
| 71 | let vb = ctx |
| 72 | .var_builder |
| 73 | .as_ref() |
| 74 | .expect("No var_builder specified") |
| 75 | .pp(&name); |
| 76 | |
| 77 | let layer = ZipformerEncoderLayer::load( |
| 78 | dim, |
| 79 | ff_dim, |
| 80 | num_heads, |
| 81 | m.query_head_dim, |
| 82 | m.value_head_dim, |
| 83 | m.pos_dim, |
| 84 | m.pos_head_dim, |
| 85 | cnn_kernel, |
| 86 | vb, |
| 87 | ctx.backend.clone(), |
| 88 | )?; |
| 89 | |
| 90 | Ok(Box::new(Self { |
| 91 | name, |
| 92 | layer, |
| 93 | stack_idx, |
| 94 | flat_idx, |
| 95 | dim, |
| 96 | pos_dim: m.pos_dim, |
| 97 | })) |
| 98 | } |
| 99 | |
| 100 | async fn forward( |
| 101 | &self, |
nothing calls this directly
no test coverage detected