示例#1
0
 public void SetLayerActivationInput(ref FeedForwardNetLayer layer, ITrainingSetItemRepository trainingSetItem)
 {
     for (int fromNo = 0; fromNo < layer.GetFromUnitCount(); fromNo++)
     {
         layer.SetFromUnitActivation(fromNo, trainingSetItem.GetInputNodeValue(fromNo));
     }
 }
示例#2
0
        public ErrorMeasure FeedForwardPassTrain(ITrainingSetItemRepository trainingSetItem)

        {
            ErrorMeasure errorMeasure;

            feedForwardNet.FeedForwardPass(squashFunction, trainingSetItem);
            errorMeasure = ForwardPassError(trainingSetItem);
            UpdateNetworkAfterTrainingItem(trainingSetItem);

            return(errorMeasure);
        }
示例#3
0
        public void CalculateDeltas(ref IFeedForwardNetLayerRepository currentLayer, ITrainingSetItemRepository trainingSetItem)
        {
            double outputDelta;

            for (int toNo = 0; toNo < currentLayer.GetToUnitCount(); toNo++)
            {
                double outputActivation = currentLayer.GetToUnitActivation(toNo);
                outputDelta = (trainingSetItem.GetOutputNodeValue(toNo) - outputActivation) * outputActivation * (1 - outputActivation);
                currentLayer.SetToUnitDelta(toNo, outputDelta);
            }
        }
示例#4
0
 public void SetLayerActivation(ref FeedForwardNetLayer layer, ITrainingSetItemRepository trainingSetItem, FeedForwardNetLayer previousLayer, int currentLayerNo)
 {
     if (IsFirstLayer(currentLayerNo))
     {
         SetLayerActivationInput(ref layer, trainingSetItem);
     }
     else
     {
         SetLayerActivationHidden(ref layer, previousLayer);
     }
 }
示例#5
0
        public void UpdateWeights(ITrainingSetItemRepository trainingSetItem)
        {
            IFeedForwardNetLayerRepository previousLayer = null;

            for (int layerNo = feedForwardNet.LayerCount() - 1; layerNo >= 0; layerNo--)
            {
                IFeedForwardNetLayerRepository currentLayer = feedForwardNet.GetLayer(layerNo);
                if (feedForwardNet.IsLastLayer(layerNo))
                {
                    outputUnitWeightStrategy.UpdateWeights(ref currentLayer);
                }
                else
                {
                    hiddenUnitWeightStrategy.UpdateWeights(ref currentLayer);
                }
                previousLayer = currentLayer;
            }
        }
示例#6
0
        ErrorMeasure ForwardPassError(ITrainingSetItemRepository trainingSetItem)
        {
            ErrorMeasure errorMeasure;
            double       sumError = 0.0;
            double       localError;
            Boolean      hasLearned = true;

            FeedForwardNetLayer outputLayer = feedForwardNet.GetOutputLayer();

            for (int outputNo = 0; outputNo < outputLayer.GetToUnitCount(); outputNo++)
            {
                localError = Math.Abs(trainingSetItem.GetOutputNodeValue(outputNo) - outputLayer.GetToUnitActivation(outputNo));
                if (localError > backPropagationConstants.OutputTolerance)
                {
                    hasLearned = false;
                }
                sumError += localError;
            }
            errorMeasure = new ErrorMeasure(hasLearned, sumError);
            return(errorMeasure);
        }
示例#7
0
        public void FeedForwardPass(ISquashFunction squashFunction, ITrainingSetItemRepository trainingSetItem)
        {
            FeedForwardNetLayer currentLayer;
            FeedForwardNetLayer previousLayer;

            for (int currentLayerNo = 0; currentLayerNo < LayerCount(); currentLayerNo++)
            {
                currentLayer = GetLayer(currentLayerNo);
                if (currentLayerNo > 0)
                {
                    previousLayer = GetLayer(currentLayerNo - 1);
                }
                else
                {
                    previousLayer = null;
                }

                SetLayerActivation(ref currentLayer, trainingSetItem, previousLayer, currentLayerNo);

                CalculateNewLayerActivation(ref currentLayer, squashFunction);
            }
            //return ForwardPassError(trainingSetItem, currentLayerNo);
        }
示例#8
0
 public void AddTrainingSetItem(ITrainingSetItemRepository trainingSetItem)
 {
     trainingSet.Add((TrainingSetItem)trainingSetItem);
 }
示例#9
0
 public void UpdateNetworkAfterTrainingItem(ITrainingSetItemRepository trainingSetItem)
 {
     UpdateDeltas(trainingSetItem);
     UpdateWeights(trainingSetItem);
 }
示例#10
0
        // IBackPropagationConstants backPropagationConstants;

        public void UpdateWeightsDeltas(ref IFeedForwardNetLayerRepository currentLayer, ITrainingSetItemRepository trainingSetItem)
        {
            CalculateDeltas(ref currentLayer, trainingSetItem);
            UpdateWeights(ref currentLayer);
        }