public AnalyzeNetwork(BasicNetwork network) { int num3; int num4; int layerTotalNeuronCount; int layerNeuronCount; int num7; int num8; double num9; int num10; int num11; double num12; int num = 0; int num2 = 0; IList<double> list = new List<double>(); IList<double> list2 = new List<double>(); if (0 != 0) { goto Label_0115; } IList<double> values = new List<double>(); if ((((uint) num2) | 1) != 0) { num3 = 0; goto Label_00C9; } Label_000B: this._xd16d54155d6ebc35 = new NumericRange(values); this._x8158512e31b17fc4 = EngineArray.ListToDouble(list2); this._x7cd672b98e9d2817 = EngineArray.ListToDouble(values); this._x5933bfade0487265 = EngineArray.ListToDouble(list); Label_003D: if (((uint) layerNeuronCount) >= 0) { } return; Label_0057: if ((((uint) num2) + ((uint) num2)) < 0) { goto Label_0317; } this._x465229d781237721 = num2; if (((uint) layerTotalNeuronCount) > uint.MaxValue) { goto Label_003D; } this._x2f33d779e5a20b28 = new NumericRange(list2); if ((((uint) num3) + ((uint) layerTotalNeuronCount)) > uint.MaxValue) { goto Label_01E8; } this._x232c44e69c86297f = new NumericRange(list); if ((((uint) num11) + ((uint) layerTotalNeuronCount)) <= uint.MaxValue) { goto Label_000B; } goto Label_01F2; Label_00C3: num3++; Label_00C9: if (num3 < (network.LayerCount - 1)) { goto Label_0317; } this._x0dcd8230e4ec0670 = num; goto Label_0057; Label_00FF: if (num11 < layerNeuronCount) { num12 = network.GetWeight(num3, num10, num11); goto Label_0127; } goto Label_00C3; Label_0115: values.Add(num12); num2++; if (0 == 0) { num11++; if (((uint) num9) < 0) { goto Label_02BF; } goto Label_00FF; } goto Label_0184; Label_0127: if (!network.Structure.ConnectionLimited) { goto Label_014B; } Label_0134: if (Math.Abs(num12) < network.Structure.ConnectionLimit) { num++; if ((((uint) num8) - ((uint) num12)) >= 0) { goto Label_0167; } goto Label_000B; } Label_014B: list.Add(num12); if ((((uint) num7) & 0) == 0) { goto Label_0115; } Label_0167: if ((((uint) num2) & 0) == 0) { goto Label_014B; } goto Label_0127; Label_0184: if (4 != 0) { goto Label_00C3; } goto Label_0057; Label_01E8: num11 = 0; goto Label_00FF; Label_01F2: num8++; Label_01F8: if (num8 < layerNeuronCount) { goto Label_02BF; } num7++; Label_0207: if (num7 < num4) { num8 = 0; goto Label_01F8; } if (((((uint) num8) | 1) != 0) && (num4 == layerTotalNeuronCount)) { goto Label_0184; } num10 = num4; goto Label_01E8; Label_02BF: num9 = network.GetWeight(num3, num7, num8); if (0 == 0) { if (network.Structure.ConnectionLimited && (((((uint) num10) + ((uint) num)) < 0) || (Math.Abs(num9) < network.Structure.ConnectionLimit))) { num++; } list2.Add(num9); } values.Add(num9); num2++; goto Label_01F2; Label_0317: num4 = network.GetLayerNeuronCount(num3); layerTotalNeuronCount = network.GetLayerTotalNeuronCount(num3); if (((uint) num7) > uint.MaxValue) { goto Label_0134; } layerNeuronCount = network.GetLayerNeuronCount(num3 + 1); num7 = 0; if ((((uint) layerTotalNeuronCount) + ((uint) layerTotalNeuronCount)) >= 0) { } goto Label_0207; }
/// <summary> /// Randomize the connections between two layers. /// </summary> /// <param name="network">The network to randomize.</param> /// <param name="fromLayer">The starting layer.</param> private void RandomizeSynapse(BasicNetwork network, int fromLayer) { int toLayer = fromLayer + 1; int toCount = network.GetLayerNeuronCount(toLayer); int fromCount = network.GetLayerNeuronCount(fromLayer); int fromCountTotalCount = network.GetLayerTotalNeuronCount(fromLayer); IActivationFunction af = network.GetActivation(toLayer); double low = CalculateRange(af, Double.NegativeInfinity); double high = CalculateRange(af, Double.PositiveInfinity); double b = 0.7d * Math.Pow(toCount, (1d / fromCount)) / (high - low); for (int toNeuron = 0; toNeuron < toCount; toNeuron++) { if (fromCount != fromCountTotalCount) { double w = RangeRandomizer.Randomize(-b, b); network.SetWeight(fromLayer, fromCount, toNeuron, w); } for (int fromNeuron = 0; fromNeuron < fromCount; fromNeuron++) { double w = RangeRandomizer.Randomize(0, b); network.SetWeight(fromLayer, fromNeuron, toNeuron, w); } } }
/// <summary> /// Randomize one level of a neural network. /// </summary> /// /// <param name="network">The network to randomize</param> /// <param name="fromLayer">The from level to randomize.</param> public override void Randomize(BasicNetwork network, int fromLayer) { int fromCount = network.GetLayerTotalNeuronCount(fromLayer); int toCount = network.GetLayerNeuronCount(fromLayer + 1); for (int fromNeuron = 0; fromNeuron < fromCount; fromNeuron++) { for (int toNeuron = 0; toNeuron < toCount; toNeuron++) { double v = CalculateValue(toCount); network.SetWeight(fromLayer, fromNeuron, toNeuron, v); } } }
/// <summary> /// Randomize one level of a neural network. /// </summary> /// /// <param name="network">The network to randomize</param> /// <param name="fromLayer">The from level to randomize.</param> public virtual void Randomize(BasicNetwork network, int fromLayer) { int fromCount = network.GetLayerTotalNeuronCount(fromLayer); int toCount = network.GetLayerNeuronCount(fromLayer + 1); for (int fromNeuron = 0; fromNeuron < fromCount; fromNeuron++) { for (int toNeuron = 0; toNeuron < toCount; toNeuron++) { double v = network.GetWeight(fromLayer, fromNeuron, toNeuron); v = Randomize(v); network.SetWeight(fromLayer, fromNeuron, toNeuron, v); } } }
/// <summary> /// Randomize one level of a neural network. /// </summary> /// /// <param name="network">The network to randomize</param> /// <param name="fromLayer">The from level to randomize.</param> public override void Randomize(BasicNetwork network, int fromLayer) { int fromCount = network.GetLayerTotalNeuronCount(fromLayer); int toCount = network.GetLayerNeuronCount(fromLayer + 1); for (int toNeuron = 0; toNeuron < toCount; toNeuron++) { double n = 0.0; for (int fromNeuron = 0; fromNeuron < fromCount; fromNeuron++) { double w = network.GetWeight(fromLayer, fromNeuron, toNeuron); n += w * w; } n = Math.Sqrt(n); for (int fromNeuron = 0; fromNeuron < fromCount; fromNeuron++) { double w = network.GetWeight(fromLayer, fromNeuron, toNeuron); w = _beta * w / n; network.SetWeight(fromLayer, fromNeuron, toNeuron, w); } } }
public override void Randomize(BasicNetwork network, int fromLayer) { int num2; int num3; double num4; int num5; double num6; int num7; double num8; int layerTotalNeuronCount = network.GetLayerTotalNeuronCount(fromLayer); goto Label_00DF; Label_0011: if (num3 < num2) { num4 = 0.0; num5 = 0; } else if ((((uint) num8) - ((uint) layerTotalNeuronCount)) >= 0) { return; } while (true) { if (num5 >= layerTotalNeuronCount) { num4 = Math.Sqrt(num4); num7 = 0; if ((((uint) num4) + ((uint) num2)) < 0) { break; } goto Label_0065; } num6 = network.GetWeight(fromLayer, num5, num3); num4 += num6 * num6; num5++; } Label_0044: if ((((uint) fromLayer) + ((uint) num6)) > uint.MaxValue) { goto Label_00DF; } num7++; Label_0065: if (num7 < layerTotalNeuronCount) { num8 = network.GetWeight(fromLayer, num7, num3); } else { num3++; goto Label_0011; } Label_009C: num8 = (this._xd7d571ecee49d1e4 * num8) / num4; network.SetWeight(fromLayer, num7, num3, num8); goto Label_0044; Label_00DF: num2 = network.GetLayerNeuronCount(fromLayer + 1); if (((uint) num8) > uint.MaxValue) { goto Label_009C; } num3 = 0; goto Label_0011; }
public override void Randomize(BasicNetwork network, int fromLayer) { int num4; double num5; int layerTotalNeuronCount = network.GetLayerTotalNeuronCount(fromLayer); int layerNeuronCount = network.GetLayerNeuronCount(fromLayer + 1); int fromNeuron = 0; if (((uint) fromLayer) < 0) { goto Label_0012; } Label_000E: if (fromNeuron < layerTotalNeuronCount) { num4 = 0; goto Label_0054; } Label_0012: if (((uint) num5) > uint.MaxValue) { goto Label_0054; } if ((((uint) fromNeuron) + ((uint) fromNeuron)) >= 0) { return; } Label_003C: num5 = this.x7417261f548b2c9b(layerNeuronCount); network.SetWeight(fromLayer, fromNeuron, num4, num5); num4++; Label_0054: if (num4 < layerNeuronCount) { goto Label_003C; } fromNeuron++; goto Label_000E; }
public virtual void Randomize(BasicNetwork network, int fromLayer) { int num4; double num5; int layerTotalNeuronCount = network.GetLayerTotalNeuronCount(fromLayer); int layerNeuronCount = network.GetLayerNeuronCount(fromLayer + 1); int fromNeuron = 0; goto Label_002C; Label_000D: fromNeuron++; if ((((uint) fromNeuron) + ((uint) fromNeuron)) > uint.MaxValue) { goto Label_004B; } if (0 != 0) { goto Label_003C; } Label_002C: if (fromNeuron < layerTotalNeuronCount) { goto Label_0067; } return; Label_003C: network.SetWeight(fromLayer, fromNeuron, num4, num5); num4++; Label_004B: if (num4 < layerNeuronCount) { num5 = network.GetWeight(fromLayer, fromNeuron, num4); if (((uint) num5) >= 0) { num5 = this.Randomize(num5); goto Label_003C; } goto Label_000D; } if ((((uint) fromLayer) + ((uint) fromLayer)) >= 0) { goto Label_000D; } Label_0067: num4 = 0; goto Label_004B; }