Simplify weight training by using 1D in the right way
This commit is contained in:
parent
10e1dd0126
commit
88114cc048
@ -668,7 +668,7 @@ namespace NanoBrain {
|
||||
|
||||
public void BackPropagation1D(float derivative, float learningRate) {
|
||||
foreach (Synapse synapse in this.synapses)
|
||||
synapse.BackPropagation(this, derivative, learningRate);
|
||||
synapse.BackPropagation(this, derivative, learningRate);
|
||||
|
||||
// Bias
|
||||
if (this.trainable) {
|
||||
@ -689,7 +689,14 @@ namespace NanoBrain {
|
||||
|
||||
public void BackPropagation3D(Vector3 derivative, float learningRate) {
|
||||
foreach (Synapse synapse in this.synapses)
|
||||
synapse.BackPropagation(this, derivative, learningRate);
|
||||
// synapse.BackPropagation(this, derivative, learningRate);
|
||||
// As the weight cannot change the direction of the derivative
|
||||
// we can use the simpler, 1D backpropagation here
|
||||
// But we still need to determine the sign of the derivative
|
||||
if (Synapse.AreOpposed(derivative, synapse.neuron.activation))
|
||||
synapse.BackPropagation(this, -derivative.magnitude, learningRate);
|
||||
else
|
||||
synapse.BackPropagation(this, derivative.magnitude, learningRate);
|
||||
|
||||
// Bias
|
||||
if (this.trainable) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user