concision_data/params/
mod.rs

1/*
2   Appellation: params <mod>
3   Contrib: FL03 <jo3mccain@icloud.com>
4*/
5//! # Parameters
6//!
7//! ## Overview
8//!
9pub 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}