//Constructors /// <summary> /// Creates an unitialized instance /// </summary> public ReadoutUnitSettings() { Name = string.Empty; TaskType = ReadoutUnit.TaskType.Forecast; FeatureFilterCfg = null; NetType = ReadoutUnitNetworkType.FF; NetSettings = null; OutputRange = null; return; }
/// <summary> /// Creates the instance and initializes it from given xml element. /// </summary> /// <param name="readoutUnitElem"> /// Xml data containing the settings. /// </param> public ReadoutUnitSettings(XElement readoutUnitElem) { //Name Name = readoutUnitElem.Attribute("name").Value; //Task and filter XElement taskElem = readoutUnitElem.Descendants().First(); if (taskElem.Name.LocalName == "forecast") { TaskType = ReadoutUnit.TaskType.Forecast; } else { TaskType = ReadoutUnit.TaskType.Classification; } FeatureFilterCfg = FeatureFilterFactory.LoadSettings(taskElem.Descendants().First()); //Net settings List <XElement> netSettingsElems = new List <XElement>(); netSettingsElems.AddRange(readoutUnitElem.Descendants("ff")); netSettingsElems.AddRange(readoutUnitElem.Descendants("pp")); if (netSettingsElems.Count != 1) { throw new Exception("Only one network configuration can be specified in readout unit settings."); } if (netSettingsElems.Count == 0) { throw new Exception("Network configuration is not specified in readout unit settings."); } XElement netSettingsElem = netSettingsElems[0]; //FF? if (netSettingsElem.Name.LocalName == "ff") { NetType = ReadoutUnitNetworkType.FF; NetSettings = new FeedForwardNetworkSettings(netSettingsElem); OutputRange = ((FeedForwardNetworkSettings)NetSettings).OutputRange.DeepClone(); } else { //PP NetType = ReadoutUnitNetworkType.PP; NetSettings = new ParallelPerceptronSettings(netSettingsElem); OutputRange = ((ParallelPerceptronSettings)NetSettings).OutputRange.DeepClone(); } return; }
/// <summary> /// Copy constructor /// </summary> /// <param name="source">Source instance</param> public ReadoutUnitSettings(ReadoutUnitSettings source) { Name = source.Name; TaskType = source.TaskType; FeatureFilterCfg = FeatureFilterFactory.DeepClone(source.FeatureFilterCfg); NetType = source.NetType; NetSettings = null; OutputRange = null; if (source.NetSettings != null) { if (source.NetSettings.GetType() == typeof(FeedForwardNetworkSettings)) { NetSettings = ((FeedForwardNetworkSettings)(source.NetSettings)).DeepClone(); } else { NetSettings = ((ParallelPerceptronSettings)(source.NetSettings)).DeepClone(); } OutputRange = source.OutputRange.DeepClone(); } return; }
/// <summary> /// The deep copy constructor. /// </summary> /// <param name="source">Source instance</param> public ExternalField(ExternalField source) : base(source) { FeatureFilterCfg = FeatureFilterFactory.DeepClone(source.FeatureFilterCfg); return; }
//Constructors /// <summary> /// Creates an initialized instance /// </summary> /// <param name="name">Field name</param> /// <param name="allowRoutingToReadout">Specifies whether the field can be included among predictors</param> /// <param name="settingsElem">Xml element containing associated feature filter settings</param> public ExternalField(string name, bool allowRoutingToReadout, XElement settingsElem) : base(name, allowRoutingToReadout) { FeatureFilterCfg = FeatureFilterFactory.LoadSettings(settingsElem); return; }