Created
January 27, 2018 12:40
-
-
Save NMZivkovic/cd84a88c634026835f2d6feb9f30b06b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Synapse : ISynapse | |
{ | |
internal INeuron _fromNeuron; | |
internal INeuron _toNeuron; | |
/// <summary> | |
/// Weight of the connection. | |
/// </summary> | |
public double Weight { get; set; } | |
/// <summary> | |
/// Weight that connection had in previous itteration. | |
/// Used in training process. | |
/// </summary> | |
public double PreviousWeight { get; set; } | |
public Synapse(INeuron fromNeuraon, INeuron toNeuron, double weight) | |
{ | |
_fromNeuron = fromNeuraon; | |
_toNeuron = toNeuron; | |
Weight = weight; | |
PreviousWeight = 0; | |
} | |
public Synapse(INeuron fromNeuraon, INeuron toNeuron) | |
{ | |
_fromNeuron = fromNeuraon; | |
_toNeuron = toNeuron; | |
var tmpRandom = new Random(); | |
Weight = tmpRandom.NextDouble(); | |
PreviousWeight = 0; | |
} | |
/// <summary> | |
/// Get output value of the connection. | |
/// </summary> | |
/// <returns> | |
/// Output value of the connection. | |
/// </returns> | |
public double GetOutput() | |
{ | |
return _fromNeuron.CalculateOutput(); | |
} | |
/// <summary> | |
/// Checks if Neuron has a certain number as an input neuron. | |
/// </summary> | |
/// <param name="fromNeuronId">Neuron Id.</param> | |
/// <returns> | |
/// True - if the neuron is the input of the connection. | |
/// False - if the neuron is not the input of the connection. | |
/// </returns> | |
public bool IsFromNeuron(Guid fromNeuronId) | |
{ | |
return _fromNeuron.Id.Equals(fromNeuronId); | |
} | |
/// <summary> | |
/// Update weight. | |
/// </summary> | |
/// <param name="learningRate">Chossen learning rate.</param> | |
/// <param name="delta">Calculated difference for which weight of the connection needs to be modified.</param> | |
public void UpdateWeight(double learningRate, double delta) | |
{ | |
PreviousWeight = Weight; | |
Weight += learningRate * delta; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment