tract_kaldi/
ops.rs

1use crate::model::KaldiOpRegister;
2use tract_hir::internal::*;
3
4pub(crate) mod affine;
5pub(crate) mod lstm_nonlin;
6pub(crate) mod memory;
7mod renorm;
8
9pub const AFFINE: &[&str] = &["FixedAffineComponent", "NaturalGradientAffineComponent"];
10
11pub fn register_all_ops(reg: &mut KaldiOpRegister) {
12    for affine in AFFINE {
13        reg.insert(affine, affine::affine_component);
14    }
15    reg.insert("BackpropTruncationComponent", |_, _| {
16        Ok(Box::<tract_hir::ops::identity::Identity>::default())
17    });
18    reg.insert("NormalizeComponent", renorm::renorm);
19    reg.insert("LstmNonlinearityComponent", lstm_nonlin::lstm_nonlin);
20    reg.insert("RectifiedLinearComponent", |_, _| {
21        Ok(expand(tract_hir::ops::activations::Clip::new(Some(0.0), None)))
22    });
23}