public void ApplyWeightAdjustments_PropogatesThroughNetwork() { //// SETUP const double InitialWeight = 0.25d; const float Momentum = 0.9f; const float LearningRate = 0.1f; var mockTarget = new Mock<ISupervisedLearnerNode>(); var mockSource = new Mock<ISupervisedLearnerNode>(); // Create the test object. var connection = new BackpropagationConnection(InitialWeight, mockSource.Object, mockTarget.Object); // EXECUTION connection.ApplyWeightAdjustments(LearningRate, Momentum); // VERIFICATION mockTarget.Verify(mock => mock.ApplyWeightAdjustments(LearningRate, Momentum), Times.Once()); }
public void ApplyWeightAdjustments_UpdatesWeight() { //// SETUP const double InitialWeight = 0.25d; const double FireInput = 1.234d; const double ErrorSignal1A = -2.3d; const double ErrorSignal1B = -9.87d; const double AccumulatedError1 = ErrorSignal1A + ErrorSignal1B; const double ErrorSignal2 = 3.2345d; const float Momentum = 0.9f; const float LearningRate = 0.1f; const double ExpectedWeight1 = (AccumulatedError1 * FireInput * LearningRate) + InitialWeight; const double ExpectedWeight2 = ExpectedWeight1 + (ErrorSignal2 * FireInput * LearningRate) + (Momentum * (AccumulatedError1 * FireInput * LearningRate)); var mockTarget = new Mock<ISupervisedLearnerNode>(); var mockSource = new Mock<ISupervisedLearnerNode>(); // Create the test object. var connection = new BackpropagationConnection(InitialWeight, mockSource.Object, mockTarget.Object); connection.Fire(FireInput); // EXECUTION connection.ReportError(ErrorSignal1A); connection.ReportError(ErrorSignal1B); connection.ApplyWeightAdjustments(LearningRate, Momentum); var actual1 = connection.Weight; connection.ClearCachedErrors(); connection.ReportError(ErrorSignal2); connection.ApplyWeightAdjustments(LearningRate, Momentum); var actual2 = connection.Weight; // VERIFICATION Assert.AreEqual(ExpectedWeight1, actual1, Epsilon); Assert.AreEqual(ExpectedWeight2, actual2, Epsilon); }
public void ReportError_ModifiesErrorSignal() { // Setup test values var mockTarget = new Mock<ISupervisedLearnerNode>(); var mockSource = new Mock<ISupervisedLearnerNode>(); const double Weight = 0.25d; const double OriginalError = 12.34d; const double ExpectedError = OriginalError * Weight; var connection = new BackpropagationConnection(Weight, mockSource.Object, mockTarget.Object); // Execute var originalFlag = connection.IsReportingError; connection.ReportError(OriginalError); var finalFlag = connection.IsReportingError; var actualError = connection.ErrorSignal; // Verify Assert.IsFalse(originalFlag); Assert.IsTrue(finalFlag); Assert.AreEqual(ExpectedError, actualError, Epsilon); mockSource.Verify(mock => mock.CalculateError(actualError), Times.Once()); }
public void Ctor_InitializesClass() { // Setup test values var mockTarget = new Mock<ISupervisedLearnerNode>(); var mockSource = new Mock<ISupervisedLearnerNode>(); const double ExpectedWeight = 0.11d; // Execute var actual = new BackpropagationConnection(ExpectedWeight, mockSource.Object, mockTarget.Object); // Verify mockSource.Verify(mock => mock.AddOutboundConnection(actual), Times.Once()); mockTarget.Verify(mock => mock.AddInboundConnection(actual), Times.Once()); Assert.AreEqual(ExpectedWeight, actual.Weight); Assert.AreSame(mockSource.Object, actual.SourceNode); Assert.AreSame(mockTarget.Object, actual.TargetNode); }
public void ClearReportingFlag_ClearsReportingFlag() { //// SETUP const double InitialWeight = 0.25d; const double ErrorSignal = -2.3d; var mockTarget = new Mock<ISupervisedLearnerNode>(); var mockSource = new Mock<ISupervisedLearnerNode>(); // Create the test object. var connection = new BackpropagationConnection(InitialWeight, mockSource.Object, mockTarget.Object); // EXECUTION connection.ReportError(ErrorSignal); var preClearFlag = connection.IsReportingError; connection.ClearReportingFlag(); var postClearFlag = connection.IsReportingError; // VERIFICATION Assert.IsTrue(preClearFlag); Assert.IsFalse(postClearFlag); }
public void ClearCachedErrors_PropogatesThroughNetwork() { //// SETUP const double InitialWeight = 0.25d; var mockTarget = new Mock<ISupervisedLearnerNode>(); var mockSource = new Mock<ISupervisedLearnerNode>(); // Create the test object. var connection = new BackpropagationConnection(InitialWeight, mockSource.Object, mockTarget.Object); // EXECUTION connection.ClearCachedErrors(); // VERIFICATION mockTarget.Verify(mock => mock.ClearCachedErrors(), Times.Once()); }