concision_params/impls/
impl_params_iter.rs1use crate::params_base::ParamsBase;
6
7use crate::iter::{ParamsIter, ParamsIterMut};
8use ndarray::iter as nditer;
9use ndarray::{Axis, Data, DataMut, Dimension, RawData, RemoveAxis};
10
11impl<A, S, D> ParamsBase<S, D, A>
18where
19 S: RawData<Elem = A>,
20 D: Dimension,
21{
22 pub fn iter(&self) -> ParamsIter<'_, A, D>
25 where
26 D: RemoveAxis,
27 S: Data,
28 {
29 ParamsIter {
30 bias: self.bias().iter(),
31 weights: self.weights().axis_iter(Axis(1)),
32 }
33 }
34 pub fn iter_mut(&mut self) -> ParamsIterMut<'_, A, D>
38 where
39 D: RemoveAxis,
40 S: DataMut,
41 {
42 ParamsIterMut {
43 bias: self.bias.iter_mut(),
44 weights: self.weights.axis_iter_mut(Axis(0)),
45 }
46 }
47 pub fn iter_bias(&self) -> nditer::Iter<'_, A, D::Smaller>
49 where
50 S: Data,
51 {
52 self.bias().iter()
53 }
54 pub fn iter_bias_mut(&mut self) -> nditer::IterMut<'_, A, D::Smaller>
56 where
57 S: DataMut,
58 {
59 self.bias_mut().iter_mut()
60 }
61 pub fn iter_weights(&self) -> nditer::Iter<'_, A, D>
63 where
64 S: Data,
65 {
66 self.weights().iter()
67 }
68 pub fn iter_weights_mut(&mut self) -> nditer::IterMut<'_, A, D>
70 where
71 S: DataMut,
72 {
73 self.weights_mut().iter_mut()
74 }
75 pub fn axis_iter_weights(&self, axis: Axis) -> nditer::AxisIter<'_, A, D::Smaller>
77 where
78 D: RemoveAxis,
79 S: Data,
80 {
81 self.weights().axis_iter(axis)
82 }
83 pub fn axis_iter_weights_mut(&mut self, axis: Axis) -> nditer::AxisIterMut<'_, A, D::Smaller>
85 where
86 D: RemoveAxis,
87 S: DataMut,
88 {
89 self.weights_mut().axis_iter_mut(axis)
90 }
91}