nevermind_neu/layers/
dummy_layer.rs

1use std::option::Option;
2
3use crate::cpu_params::{CpuParams, ParamsBlob};
4use crate::util::{DataVec, WithParams};
5use crate::layers::{AbstractLayer, LayerBackwardResult, LayerForwardResult};
6
7// not used
8#[derive(Default, Clone)]
9pub struct DummyLayer {
10    output: DataVec,
11    fake_lr: CpuParams,
12}
13
14impl AbstractLayer for DummyLayer {
15    fn forward(&mut self, input: ParamsBlob) -> LayerForwardResult {
16        Ok(input)
17    }
18
19    fn backward(
20        &mut self,
21        prev_input: ParamsBlob,
22        input: ParamsBlob,
23    ) -> LayerBackwardResult {
24        Ok( vec![self.fake_lr.clone()] )
25    }
26
27    fn cpu_params(&self) -> Option<CpuParams> {
28        Some(self.fake_lr.clone())
29    }
30
31    fn layer_type(&self) -> &str {
32        return "DummyLayer";
33    }
34
35    fn set_input_shape(&mut self, sh: &[usize]) {
36    }
37
38    fn size(&self) -> usize {
39        0
40    }
41
42    fn copy_layer(&self) -> Box<dyn AbstractLayer> {
43        Box::new(self.clone())
44    }
45
46    fn clone_layer(&self) -> Box<dyn AbstractLayer> {
47        self.copy_layer()
48    }
49
50    fn set_cpu_params(&mut self, lp: CpuParams) {
51        self.fake_lr = lp;
52    }
53}
54
55impl DummyLayer {
56    pub fn new() -> Self {
57        DummyLayer {
58            output: DataVec::zeros(0),
59            fake_lr: CpuParams::new(0, 0),
60        }
61    }
62}
63
64impl WithParams for DummyLayer { }