/// <summary> /// Creates the instance and initialize it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing settings. /// Content of xml element is always validated against the xml schema. /// </param> public InputSynapseSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.SM.Synapse.InputSynapseSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing XElement cfgElem; //Spiking target //Scope cfgElem = settingsElem.XPathSelectElement("./spikingTarget"); if (cfgElem != null) { SpikingTargetScope = BaseSynapse.ParseSynapticTargetScope(cfgElem.Attribute("scope").Value); } else { SpikingTargetScope = BaseSynapse.SynapticTargetScope.Excitatory; } //Spiking target Weight cfgElem = settingsElem.XPathSelectElement("./spikingTarget/weight"); if (cfgElem != null) { SpikingTargetWeightCfg = new RandomValueSettings(cfgElem); } else { SpikingTargetWeightCfg = new RandomValueSettings(0, 1); } //Analog target //Scope cfgElem = settingsElem.XPathSelectElement("./analogTarget"); if (cfgElem != null) { AnalogTargetScope = BaseSynapse.ParseSynapticTargetScope(cfgElem.Attribute("scope").Value); } else { AnalogTargetScope = BaseSynapse.SynapticTargetScope.All; } //Analog target Weight cfgElem = settingsElem.XPathSelectElement("./analogTarget/weight"); if (cfgElem != null) { AnalogTargetWeightCfg = new RandomValueSettings(cfgElem); } else { AnalogTargetWeightCfg = new RandomValueSettings(0, 1); } //Delay DelayMethod = BaseSynapse.ParseSynapticDelayMethod(settingsElem.Attribute("delayMethod").Value); MaxDelay = int.Parse(settingsElem.Attribute("maxDelay").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates the instance and initialize it from given xml element. /// This is the preferred way to instantiate settings. /// </summary> /// <param name="elem"> /// Xml data containing settings. /// Content of xml element is always validated against the xml schema. /// </param> public FeedForwardNetworkSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.FF.FeedForwardNetworkSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing OutputLayerActivation = ActivationFactory.LoadSettings(settingsElem.Descendants().First()); if (!IsAllowedActivation(OutputLayerActivation, out Interval outputRange)) { throw new ApplicationException($"Activation can't be used in FF network. Activation function has to be stateless and has to support derivative calculation."); } OutputRange = outputRange; //Hidden layers HiddenLayerCollection = new List <HiddenLayerSettings>(); XElement hiddenLayersElem = settingsElem.Descendants("hiddenLayers").FirstOrDefault(); if (hiddenLayersElem != null) { foreach (XElement layerElem in hiddenLayersElem.Descendants("layer")) { HiddenLayerCollection.Add(new HiddenLayerSettings(layerElem)); } } //Trainer configuration TrainerCfg = null; foreach (XElement candidate in settingsElem.Descendants()) { if (candidate.Name.LocalName == "qrdRegrTrainer") { TrainerCfg = new QRDRegrTrainerSettings(candidate); } else if (candidate.Name.LocalName == "ridgeRegrTrainer") { TrainerCfg = new RidgeRegrTrainerSettings(candidate); } else if (candidate.Name.LocalName == "elasticRegrTrainer") { TrainerCfg = new ElasticRegrTrainerSettings(candidate); } else if (candidate.Name.LocalName == "resPropTrainer") { TrainerCfg = new RPropTrainerSettings(candidate); } if (TrainerCfg != null) { break; } } if (TrainerCfg == null) { throw new Exception("Trainer settings not found."); } return; }
/// <summary> /// Creates the instance and initialize it from given xml element. /// This is the preferred way to instantiate reservoir settings. /// </summary> /// <param name="elem"> /// Xml data containing feed forward network settings. /// Content of xml element is always validated against the xml schema. /// </param> public FeedForwardNetworkSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.FF.FeedForwardNetworkSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement feedForwardNetworkSettingsElem = validator.Validate(elem, "rootElem"); //Parsing OutputLayerActivation = new ActivationSettings(feedForwardNetworkSettingsElem.Descendants("outputActivation").First()); if (!IsAllowedActivation(OutputLayerActivation)) { throw new ApplicationException($"Activation {OutputLayerActivation.FunctionType} can't be used in FF network. Activation function has to be stateless and has to support derivative calculation."); } RegressionMethod = ParseTrainingMethodType(feedForwardNetworkSettingsElem.Attribute("regressionMethod").Value); //Hidden layers HiddenLayerCollection = new List <HiddenLayerSettings>(); XElement hiddenLayersElem = feedForwardNetworkSettingsElem.Descendants("hiddenLayers").FirstOrDefault(); if (hiddenLayersElem != null) { foreach (XElement layerElem in hiddenLayersElem.Descendants("layer")) { HiddenLayerCollection.Add(new HiddenLayerSettings(layerElem)); } } //Trainers LinRegrTrainerCfg = null; RPropTrainerCfg = null; switch (RegressionMethod) { case TrainingMethodType.Linear: XElement linRegrTrainerElem = feedForwardNetworkSettingsElem.Descendants("linRegrTrainer").FirstOrDefault(); if (linRegrTrainerElem != null) { LinRegrTrainerCfg = new LinRegrTrainerSettings(linRegrTrainerElem); } else { LinRegrTrainerCfg = new LinRegrTrainerSettings(); } break; case TrainingMethodType.Resilient: XElement resPropTrainerElem = feedForwardNetworkSettingsElem.Descendants("resPropTrainer").FirstOrDefault(); if (resPropTrainerElem != null) { RPropTrainerCfg = new RPropTrainerSettings(resPropTrainerElem); } else { RPropTrainerCfg = new RPropTrainerSettings(); } break; } return; }
/// <summary> /// Creates an instance and initializes it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing RandomValueSettings settings. /// Content of xml element is always validated against the xml schema. /// </param> public RandomValueSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RandomValue.RandomValueSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement randomValueSettingsElem = validator.Validate(elem, "rootElem"); //Parsing Min = double.Parse(randomValueSettingsElem.Attribute("min").Value, CultureInfo.InvariantCulture); Max = double.Parse(randomValueSettingsElem.Attribute("max").Value, CultureInfo.InvariantCulture); RandomSign = bool.Parse(randomValueSettingsElem.Attribute("randomSign").Value); XElement distrParamsElem = randomValueSettingsElem.Elements().FirstOrDefault(); if (distrParamsElem == null) { DistrType = RandomExtensions.DistributionType.Uniform; DistrCfg = new UniformDistrSettings(); } else { switch (distrParamsElem.Name.LocalName) { case "uniformDistr": DistrType = RandomExtensions.DistributionType.Uniform; DistrCfg = new UniformDistrSettings(distrParamsElem); break; case "gaussianDistr": DistrType = RandomExtensions.DistributionType.Gaussian; DistrCfg = new GaussianDistrSettings(distrParamsElem); break; case "exponentialDistr": DistrType = RandomExtensions.DistributionType.Exponential; DistrCfg = new ExponentialDistrSettings(distrParamsElem); break; case "gammaDistr": DistrType = RandomExtensions.DistributionType.Gamma; DistrCfg = new GammaDistrSettings(distrParamsElem); break; default: throw new Exception($"Unexpected element {distrParamsElem.Name.LocalName}"); } } Check(); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing settings</param> public BinFeatureFilterSettings(XElement elem) : base(BaseFeatureFilter.FeatureType.Binary) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Data.Filter.BinFeatureFilterSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); return; }
/// <summary> /// Creates an instance and initializes it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing Sigmoid activation settings. /// Content of xml element is always validated against the xml schema. /// </param> public SigmoidSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Activation.SigmoidSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement activationSettingsElem = validator.Validate(elem, "rootElem"); //Parsing return; }
/// <summary> /// Creates an instance and initializes it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing SoftExponential activation settings. /// Content of xml element is always validated against the xml schema. /// </param> public SoftExponentialSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Activation.SoftExponentialSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement activationSettingsElem = validator.Validate(elem, "rootElem"); //Parsing Alpha = RandomValueSettings.LoadOrDefault(activationSettingsElem, "alpha", TypicalAlpha); return; }
/// <summary> /// Creates an instance and initializes it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing ISRU activation settings. /// Content of xml element is always validated against the xml schema. /// </param> public ISRUSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Activation.ISRUSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement activationSettingsElem = validator.Validate(elem, "rootElem"); //Parsing Alpha = new RandomValueSettings(activationSettingsElem.Descendants("alpha").FirstOrDefault()); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing settings</param> public ConstGeneratorSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Data.Generators.ConstGeneratorSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing ConstSignal = double.Parse(settingsElem.Attribute("constSignal").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates an instance and initializes it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing LeakyReLU activation settings. /// Content of xml element is always validated against the xml schema. /// </param> public LeakyReLUSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Activation.LeakyReLUSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement activationSettingsElem = validator.Validate(elem, "rootElem"); //Parsing NegSlope = RandomValueSettings.LoadOrDefault(activationSettingsElem, "negSlope", TypicalNegSlope); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing linear regression trainer settings</param> public RidgeRegrTrainerSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.FF.RidgeRegrTrainerSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing NumOfAttemptEpochs = int.Parse(settingsElem.Attribute("attemptEpochs").Value, CultureInfo.InvariantCulture); LambdaSeekerCfg = new ParamSeekerSettings(settingsElem.Descendants("lambda").First()); return; }
/// <summary> /// Creates the instance and initialize it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing settings. /// Content of xml element is always validated against the xml schema. /// </param> public StaticSynapseSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.SM.Synapse.StaticSynapseSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing //Weight WeightCfg = new RandomValueSettings(settingsElem.Descendants("weight").First()); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing settings</param> public EnumFeatureFilterSettings(XElement elem) : base(BaseFeatureFilter.FeatureType.Enum) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Data.Filter.EnumFeatureFilterSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing NumOfElements = int.Parse(settingsElem.Attribute("numOfElements").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing linear regression trainer settings</param> public LinRegrTrainerSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.FF.LinRegrTrainerSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement linRegrTrainerSettingsElem = validator.Validate(elem, "rootElem"); //Parsing HiNoiseIntensity = double.Parse(linRegrTrainerSettingsElem.Attribute("hiNoiseIntensity").Value, CultureInfo.InvariantCulture); MaxStretch = double.Parse(linRegrTrainerSettingsElem.Attribute("maxStretch").Value, CultureInfo.InvariantCulture); ZeroMargin = double.Parse(linRegrTrainerSettingsElem.Attribute("zeroMargin").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing the settings</param> public ParamSeekerSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.MathTools.PS.ParamSeekerSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement linRegrTrainerSettingsElem = validator.Validate(elem, "rootElem"); //Parsing Min = double.Parse(linRegrTrainerSettingsElem.Attribute("min").Value, CultureInfo.InvariantCulture); Max = double.Parse(linRegrTrainerSettingsElem.Attribute("max").Value, CultureInfo.InvariantCulture); NumOfSteps = int.Parse(linRegrTrainerSettingsElem.Attribute("steps").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing settings</param> public SinusoidalGeneratorSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Data.Generators.SinusoidalGeneratorSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing Phase = double.Parse(settingsElem.Attribute("phase").Value, CultureInfo.InvariantCulture); Freq = double.Parse(settingsElem.Attribute("freq").Value, CultureInfo.InvariantCulture); Ampl = double.Parse(settingsElem.Attribute("ampl").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing elastic linear regression trainer settings</param> public ElasticRegrTrainerSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.FF.ElasticRegrTrainerSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing NumOfAttemptEpochs = int.Parse(settingsElem.Attribute("attemptEpochs").Value, CultureInfo.InvariantCulture); Lambda = double.Parse(settingsElem.Attribute("lambda").Value, CultureInfo.InvariantCulture); Alpha = double.Parse(settingsElem.Attribute("alpha").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing settings</param> public RealFeatureFilterSettings(XElement elem) : base(BaseFeatureFilter.FeatureType.Real) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Data.Filter.RealFeatureFilterSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing Standardize = bool.Parse(settingsElem.Attribute("standardize").Value); KeepReserve = bool.Parse(settingsElem.Attribute("keepReserve").Value); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing settings</param> public PulseGeneratorSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Data.Generators.PulseGeneratorSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing Signal = double.Parse(settingsElem.Attribute("signal").Value, CultureInfo.InvariantCulture); AvgPeriod = Math.Abs(double.Parse(settingsElem.Attribute("avgPeriod").Value, CultureInfo.InvariantCulture)); Mode = ParseTimingMode(settingsElem.Attribute("mode").Value); return; }
/// <summary> /// Creates the instance and initialize it from given xml element. /// This is the preferred way to instantiate reservoir settings. /// </summary> /// <param name="elem"> /// Xml data containing reservoir settings. /// Content of xml element is always validated against the xml schema. /// </param> public ReservoirSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.SM.Preprocessing.ReservoirSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement reservoirSettingsElem = validator.Validate(elem, "rootElem"); //Parsing SettingsName = reservoirSettingsElem.Attribute("name").Value; SynapticDelayMethod = CommonEnums.ParseSynapticDelayMethod(reservoirSettingsElem.Attribute("synapticDelayMethod").Value); MaxInputDelay = int.Parse(reservoirSettingsElem.Attribute("maxInputDelay").Value, CultureInfo.InvariantCulture); MaxInternalDelay = int.Parse(reservoirSettingsElem.Attribute("maxInternalDelay").Value, CultureInfo.InvariantCulture); SpectralRadius = reservoirSettingsElem.Attribute("spectralRadius").Value == "NA" ? -1d : double.Parse(reservoirSettingsElem.Attribute("spectralRadius").Value, CultureInfo.InvariantCulture); //Input entry point InputEntryPoint = new int[3]; if (reservoirSettingsElem.Descendants("inputEntryPoint").Count() > 0) { InputEntryPoint[0] = int.Parse(reservoirSettingsElem.Descendants("inputEntryPoint").First().Attribute("x").Value, CultureInfo.InvariantCulture); InputEntryPoint[1] = int.Parse(reservoirSettingsElem.Descendants("inputEntryPoint").First().Attribute("y").Value, CultureInfo.InvariantCulture); InputEntryPoint[2] = int.Parse(reservoirSettingsElem.Descendants("inputEntryPoint").First().Attribute("z").Value, CultureInfo.InvariantCulture); } else { InputEntryPoint.Populate(0); } //Pool settings collection PoolSettingsCollection = new List <PoolSettings>(); foreach (XElement poolSettingsElem in reservoirSettingsElem.Descendants("pools").First().Descendants("pool")) { PoolSettingsCollection.Add(new PoolSettings(poolSettingsElem)); } //Pools interconnection settings PoolsInterconnectionCollection = new List <PoolsInterconnection>(); XElement pool2PoolConnContainerElem = reservoirSettingsElem.Descendants("pool2PoolConns").FirstOrDefault(); if (pool2PoolConnContainerElem != null) { foreach (XElement poolsInterConnElem in pool2PoolConnContainerElem.Descendants("pool2PoolConn")) { PoolsInterconnectionCollection.Add(new PoolsInterconnection(poolsInterConnElem, PoolSettingsCollection)); } } return; }
/// <summary> /// Creates an instance and initializes it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing IzhikevichIF activation settings. /// Content of xml element is always validated against the xml schema. /// </param> public AutoIzhikevichIFSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Activation.AutoIzhikevichIFSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement activationSettingsElem = validator.Validate(elem, "rootElem"); //Parsing Role = NeuronCommon.ParseNeuronRole(activationSettingsElem.Attribute("role").Value); RefractoryPeriods = int.Parse(activationSettingsElem.Attribute("refractoryPeriods").Value, CultureInfo.InvariantCulture); SolverMethod = ODENumSolver.ParseComputationMethodType(activationSettingsElem.Attribute("solverMethod").Value); SolverCompSteps = int.Parse(activationSettingsElem.Attribute("solverCompSteps").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates an instance and initializes it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing RandomValueSettings settings. /// Content of xml element is always validated against the xml schema. /// </param> public RandomValueSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RandomValue.RandomValueSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement randomValueSettingsElem = validator.Validate(elem, "rootElem"); //Parsing Min = double.Parse(randomValueSettingsElem.Attribute("min").Value, CultureInfo.InvariantCulture); Max = double.Parse(randomValueSettingsElem.Attribute("max").Value, CultureInfo.InvariantCulture); RandomSign = bool.Parse(randomValueSettingsElem.Attribute("randomSign").Value); DistrType = RandomClassExtensions.ParseDistributionType(randomValueSettingsElem.Attribute("distribution").Value); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing p-delta rule trainer settings</param> public PDeltaRuleTrainerSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.PP.PDeltaRuleTrainerSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement pDeltaRuleTrainerSettingsElem = validator.Validate(elem, "rootElem"); //Parsing IniLR = double.Parse(pDeltaRuleTrainerSettingsElem.Attribute("iniLR").Value, CultureInfo.InvariantCulture); IncLR = double.Parse(pDeltaRuleTrainerSettingsElem.Attribute("incLR").Value, CultureInfo.InvariantCulture); DecLR = double.Parse(pDeltaRuleTrainerSettingsElem.Attribute("decLR").Value, CultureInfo.InvariantCulture); MinLR = double.Parse(pDeltaRuleTrainerSettingsElem.Attribute("minLR").Value, CultureInfo.InvariantCulture); MaxLR = double.Parse(pDeltaRuleTrainerSettingsElem.Attribute("maxLR").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates an instance and initializes it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing SimpleIF activation settings. /// Content of xml element is always validated against the xml schema. /// </param> public SimpleIFSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Activation.SimpleIFSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement activationSettingsElem = validator.Validate(elem, "rootElem"); //Parsing Resistance = RandomValueSettings.LoadOrDefault(activationSettingsElem, "resistance", TypicalResistance); DecayRate = RandomValueSettings.LoadOrDefault(activationSettingsElem, "decayRate", TypicalDecayRate); ResetV = RandomValueSettings.LoadOrDefault(activationSettingsElem, "resetV", TypicalResetV); FiringThresholdV = RandomValueSettings.LoadOrDefault(activationSettingsElem, "firingThresholdV", TypicalFiringThresholdV); RefractoryPeriods = int.Parse(activationSettingsElem.Attribute("refractoryPeriods").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates an instance and initializes it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing SimpleIF activation settings. /// Content of xml element is always validated against the xml schema. /// </param> public SimpleIFSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Activation.SimpleIFSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement activationSettingsElem = validator.Validate(elem, "rootElem"); //Parsing StimuliCoeff = double.Parse(activationSettingsElem.Attribute("stimuliCoeff").Value, CultureInfo.InvariantCulture); Resistance = new RandomValueSettings(activationSettingsElem.Descendants("resistance").FirstOrDefault()); DecayRate = new RandomValueSettings(activationSettingsElem.Descendants("decayRate").FirstOrDefault()); ResetV = new RandomValueSettings(activationSettingsElem.Descendants("resetV").FirstOrDefault()); FiringThresholdV = new RandomValueSettings(activationSettingsElem.Descendants("firingThresholdV").FirstOrDefault()); RefractoryPeriods = int.Parse(activationSettingsElem.Attribute("refractoryPeriods").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates the instance and initialize it from given xml element. /// This is the preferred way to instantiate settings. /// </summary> /// <param name="elem"> /// Xml data containing settings. /// Content of xml element is always validated against the xml schema. /// </param> public ParallelPerceptronSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.PP.ParallelPerceptronSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing NumOfGates = int.Parse(settingsElem.Attribute("gates").Value, CultureInfo.InvariantCulture); Resolution = int.Parse(settingsElem.Attribute("resolution").Value, CultureInfo.InvariantCulture); OutputRange = new Interval(-1, 1); XElement pDeltaRuleTrainerElem = settingsElem.Descendants("pDeltaRuleTrainer").First(); PDeltaRuleTrainerCfg = new PDeltaRuleTrainerSettings(pDeltaRuleTrainerElem); return; }
/// <summary> /// Creates the instance and initialize it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing settings. /// Content of xml element is always validated against the xml schema. /// </param> public InterconnectionSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.SM.Preprocessing.PoolInterconnectionSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement settingsElem = validator.Validate(elem, "rootElem"); //Parsing //Density Density = double.Parse(settingsElem.Attribute("density").Value, CultureInfo.InvariantCulture); //Ratios double relShareEE = double.Parse(settingsElem.Attribute("relShareEE").Value, CultureInfo.InvariantCulture); double relShareEI = double.Parse(settingsElem.Attribute("relShareEI").Value, CultureInfo.InvariantCulture); double relShareIE = double.Parse(settingsElem.Attribute("relShareIE").Value, CultureInfo.InvariantCulture); double relShareII = double.Parse(settingsElem.Attribute("relShareII").Value, CultureInfo.InvariantCulture); double sum = relShareEE + relShareEI + relShareIE + relShareII; RatioEE = relShareEE / sum; RatioEI = relShareEI / sum; RatioIE = relShareIE / sum; RatioII = relShareII / sum; //Average distance AvgDistance = settingsElem.Attribute("avgDistance").Value == "NA" ? 0d : double.Parse(settingsElem.Attribute("avgDistance").Value, CultureInfo.InvariantCulture); //Allow self connections? AllowSelfConnection = bool.Parse(settingsElem.Attribute("allowSelfConnection").Value); //Will have each neuron the same number of connections? ConstantNumOfConnections = bool.Parse(settingsElem.Attribute("constantNumOfConnections").Value); //Synapse XElement synapseCfgElem = settingsElem.Descendants().First(); if (synapseCfgElem.Name == "staticSynapse") { SynapseCfg = new StaticSynapseSettings(synapseCfgElem); } else { SynapseCfg = new DynamicSynapseSettings(synapseCfgElem); } return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// Content of xml element is always validated against the xml schema. /// </summary> /// <param name="elem">Xml data containing resilient propagation trainer settings</param> public RPropTrainerSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.FF.RPropTrainerSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement rPropTrainerSettingsElem = validator.Validate(elem, "rootElem"); //Parsing ZeroTolerance = double.Parse(rPropTrainerSettingsElem.Attribute("zeroTolerance").Value, CultureInfo.InvariantCulture); PositiveEta = double.Parse(rPropTrainerSettingsElem.Attribute("positiveEta").Value, CultureInfo.InvariantCulture); NegativeEta = double.Parse(rPropTrainerSettingsElem.Attribute("negativeEta").Value, CultureInfo.InvariantCulture); IniDelta = double.Parse(rPropTrainerSettingsElem.Attribute("iniDelta").Value, CultureInfo.InvariantCulture); MinDelta = double.Parse(rPropTrainerSettingsElem.Attribute("minDelta").Value, CultureInfo.InvariantCulture); MaxDelta = double.Parse(rPropTrainerSettingsElem.Attribute("maxDelta").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates an instance and initializes it from given xml element. /// </summary> /// <param name="elem"> /// Xml data containing LeakyIF activation settings. /// Content of xml element is always validated against the xml schema. /// </param> public LeakyIFSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Activation.LeakyIFSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement activationSettingsElem = validator.Validate(elem, "rootElem"); //Parsing TimeScale = RandomValueSettings.LoadOrDefault(activationSettingsElem, "timeScale", TypicalTimeScale); Resistance = RandomValueSettings.LoadOrDefault(activationSettingsElem, "resistance", TypicalResistance); RestV = RandomValueSettings.LoadOrDefault(activationSettingsElem, "restV", TypicalRestV); ResetV = RandomValueSettings.LoadOrDefault(activationSettingsElem, "resetV", TypicalResetV); FiringThresholdV = RandomValueSettings.LoadOrDefault(activationSettingsElem, "firingThresholdV", TypicalFiringThresholdV); RefractoryPeriods = int.Parse(activationSettingsElem.Attribute("refractoryPeriods").Value, CultureInfo.InvariantCulture); SolverMethod = ODENumSolver.ParseComputationMethodType(activationSettingsElem.Attribute("solverMethod").Value); SolverCompSteps = int.Parse(activationSettingsElem.Attribute("solverCompSteps").Value, CultureInfo.InvariantCulture); return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// This is the preferred way to instantiate ReadoutLayer settings. /// </summary> /// <param name="elem"> /// Xml data containing ReadoutLayer settings. /// Content of xml element is always validated against the xml schema. /// </param> public ReadoutLayerSettings(XElement elem) { //Validation ElemValidator validator = new ElemValidator(); Assembly assemblyRCNet = Assembly.GetExecutingAssembly(); validator.AddXsdFromResources(assemblyRCNet, "RCNet.Neural.Network.SM.Readout.ReadoutLayerSettings.xsd"); validator.AddXsdFromResources(assemblyRCNet, "RCNet.RCNetTypes.xsd"); XElement readoutLayerSettingsElem = validator.Validate(elem, "rootElem"); //Parsing TestDataRatio = double.Parse(readoutLayerSettingsElem.Attribute("testDataRatio").Value, CultureInfo.InvariantCulture); NumOfFolds = readoutLayerSettingsElem.Attribute("folds").Value == "Auto" ? 0 : int.Parse(readoutLayerSettingsElem.Attribute("folds").Value); //Readout units ReadoutUnitCfgCollection = new List <ReadoutUnitSettings>(); foreach (XElement readoutUnitElem in readoutLayerSettingsElem.Descendants("readoutUnit")) { ReadoutUnitCfgCollection.Add(new ReadoutUnitSettings(readoutUnitElem)); } return; }