//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> /// Constructs an instance prepared for initialization (updates) /// </summary> /// <param name="taskType"></param> /// <param name="numOfReadoutUnits"></param> /// <param name="refBinDistr"></param> public ClusterErrStatistics(ReadoutUnit.TaskType taskType, int numOfReadoutUnits, BinDistribution refBinDistr) { TaskType = taskType; NumOfReadoutUnits = numOfReadoutUnits; NatPrecissionErrStat = new BasicStat(); NrmPrecissionErrStat = new BasicStat(); BinaryErrStat = null; if (TaskType == ReadoutUnit.TaskType.Classification) { BinaryErrStat = new BinErrStat(refBinDistr); } 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> /// Returns task dependent collection of networks settings /// </summary> /// <param name="task">Task type</param> public List <INonRecurrentNetworkSettings> GetTaskNetworksCfgs(ReadoutUnit.TaskType task) { return(task == ReadoutUnit.TaskType.Classification ? ClassificationNetworksCfg.NetworkCfgCollection : ForecastNetworksCfg.NetworkCfgCollection); }