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}