nevermind_neu/layers/
dummy_layer.rs1use std::option::Option;
2
3use crate::cpu_params::{CpuParams, ParamsBlob};
4use crate::util::{DataVec, WithParams};
5use crate::layers::{AbstractLayer, LayerBackwardResult, LayerForwardResult};
6
7#[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 { }