concision_data/params/
mod.rs1pub use self::{kinds::*, parameter::*};
10
11pub(crate) mod kinds;
12pub(crate) mod parameter;
13
14pub mod store;
15
16mod impls {
17 #[cfg(feature = "rand")]
18 mod impl_rand;
19}
20
21pub trait Param {
22 type Key;
23 type Value;
24}
25
26pub trait Params {
27 type Store;
28}
29
30pub(crate) mod prelude {
31 pub use super::kinds::ParamKind;
32 pub use super::parameter::Parameter;
33 pub use super::store::ParamStore;
34 pub use super::{Param, Params};
35}
36
37#[cfg(test)]
38mod tests {
39 use super::*;
40 use concision::linarr;
41 use nd::linalg::Dot;
42 use nd::prelude::*;
43
44 #[test]
45 fn test_parameter() {
46 let value = linarr::<f64, Ix2>((3, 3)).unwrap();
47 let mut param = Parameter::<f64, Ix2>::new((10, 1), ParamKind::Bias, "bias");
48 param.set_params(value.clone());
49
50 assert_eq!(param.kind(), &ParamKind::Bias);
51 assert_eq!(param.name(), "bias");
52
53 let x = linarr::<f64, Ix1>((3,)).unwrap();
54 assert_eq!(param.dot(&x), value.dot(&x));
55 }
56}