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(); }
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); }