public void Update(mythLayer layer, double rate) { for (int i = 0; i < layer.get().Length; i++) { var __delta = layer.get()[i].Output * this.Delta; _w[i] -= __delta * rate; } }
private double ETotal(mythLayer layer) { double _etotal = 0; foreach (var t in layer.get()) { _etotal += t.CalcE; } return(_etotal); }
private double Foward(mythLayer layer) { var _layerVal = layer.get(); //if (_layerVal.Length != _w.Length) double ret = 0; for (int i = 0; i < _layerVal.Length; i++) { ret += _layerVal[i].Output * _w[i]; } //ret += _φ; _output = sigmoid(ret); return(_output); }
public void CalcDelta(mythLayer layer = null) { double dedoutput = 0; if (layer == null) { dedoutput = Output - Target; } else { //dedoutput = de1/doutput1 + de2/doutput2 foreach (var t in layer.get()) { dedoutput += t.Delta * t._w[_index]; } } var doutputdnet = disigmoid(Output); _delta = dedoutput * doutputdnet; }