Пример #1
0
 public NNFeedForwardNetwork(int[] unitsPerLayer)
 {
     layers               = new NNLayer[unitsPerLayer.Length];
     weightsPerLayer      = new NNMatrix[getLayerCount()];
     weightedinputOfLayer = new double[getLayerCount()][];
     outputOfLayer        = new double[getLayerCount()][];
     for (int layer = 0; layer < getLayerCount(); layer++)
     {
         layers[layer] = new NNLayer(unitsPerLayer[layer], ActivationFunctions.sigmoid);
         weightedinputOfLayer[layer] = new double[layers[layer].getUnitCount()];
         outputOfLayer[layer]        = new double[layers[layer].getUnitCount()];
         if (layer == 0)
         {
             weightsPerLayer[layer] = new NNMatrix(getLayer(layer).getUnitCount(), getLayer(layer).getUnitCount());
             for (int unit = 0; unit < getLayer(layer).getUnitCount(); unit++)
             {
                 weightsPerLayer[layer][unit, unit] = 1.0;
             }
         }
         else
         {
             weightsPerLayer[layer] = new NNMatrix(getLayer(layer).getUnitCount(), getLayer(layer - 1).getUnitCount());
         }
     }
     System.Threading.Thread.Sleep(1);
     rnd = new Random(System.DateTime.Now.Millisecond);
     callUpdateCallbacks();
 }
Пример #2
0
 public NNRestrictedBoltzmannMachine(int visibleUnitCnt, int hiddenUnitCnt)
 {
     rnd         = new Random(System.DateTime.Now.Millisecond);
     visible     = new NNLayer(visibleUnitCnt, ActivationFunctions.sigmoid);
     hidden      = new NNLayer(hiddenUnitCnt, ActivationFunctions.sigmoid);
     biasVisible = new double[visibleUnitCnt];
     biasHidden  = new double[hiddenUnitCnt];
     weights     = new NNMatrix(hiddenUnitCnt, visibleUnitCnt);
 }