MCPcopy Create free account
hub / github.com/daniel-e/rustml / feedforward

Method feedforward

src/nn.rs:131–150  ·  view source on GitHub ↗
(&self, x: &[f64])

Source from the content-addressed store, hash-verified

129 }
130
131 fn feedforward(&self, x: &[f64]) -> (Vec<Vec<f64>>, Vec<Vec<f64>>) {
132
133 assert!(self.layers.len() >= 2, "At least two layers are required.");
134 assert!(x.len() == self.input_size(), "Dimension of input vector does not match.");
135
136 let mut av = vec![x.to_vec()]; // inputs for the next layer (=sigmoid applied to outputs + bias unit)
137 let mut zv = vec![x.to_vec()]; // outputs of previous layer without sigmoid
138 let n = self.layers() - 2;
139
140 for (idx, theta) in self.params.iter().enumerate() {
141 let net = theta.mul_vec(&av.last().unwrap());
142 if idx < n {
143 av.push([1.0].append(&net.sigmoid()));
144 } else {
145 av.push(net.sigmoid());
146 }
147 zv.push(net);
148 }
149 (av, zv)
150 }
151
152 fn backprop(&self, output: &[f64], target: &[f64], av_zv: &(Vec<Vec<f64>>, Vec<Vec<f64>>)) -> Vec<Vec<f64>> {
153

Callers 2

derivativesMethod · 0.80
test_feedforwardFunction · 0.80

Calls 4

layersMethod · 0.80
appendMethod · 0.80
sigmoidMethod · 0.80
iterMethod · 0.45

Tested by 1

test_feedforwardFunction · 0.64