//Constructor /// <summary> /// Creates an uninitialized instance /// </summary> /// <param name="taskType">Type of the task</param> /// <param name="settings">Readout layer configuration</param> /// <param name="rand">Random object to be used</param> public ReadoutLayer(CommonEnums.TaskType taskType, ReadoutLayerSettings settings, System.Random rand ) { _taskType = taskType; _settings = settings.DeepClone(); _rand = rand; _clusterCollection = new ReadoutUnit[_settings.OutputFieldNameCollection.Count][]; _clusterErrStatisticsCollection = new List <ClusterErrStatistics>(); return; }
//Constructors /// <summary> /// Creates an initialized instance /// </summary> /// <param name="neuralPreprocessorCfg">Configuration of the neural preprocessor</param> /// <param name="readoutLayerCfg">Configuration of the readout layer</param> /// <param name="mapperCfg">Configuration of mapper of predictors to readout units</param> /// <param name="randomizerSeek">Specifies random number generator's initial seek</param> public StateMachineSettings(NeuralPreprocessorSettings neuralPreprocessorCfg, ReadoutLayerSettings readoutLayerCfg, MapperSettings mapperCfg = null, int randomizerSeek = DefaultRandomizerSeek) { NeuralPreprocessorCfg = neuralPreprocessorCfg == null ? null : (NeuralPreprocessorSettings)neuralPreprocessorCfg.DeepClone(); ReadoutLayerCfg = (ReadoutLayerSettings)readoutLayerCfg.DeepClone(); MapperCfg = mapperCfg == null ? null : (MapperSettings)mapperCfg.DeepClone(); RandomizerSeek = randomizerSeek; Check(); return; }
//Constructor /// <summary> /// Creates an uninitialized instance. /// </summary> /// <param name="readoutLayerConfig">The configuration of the readout layer.</param> public VerificationResults(ReadoutLayerSettings readoutLayerConfig) { ReadoutLayerConfig = (ReadoutLayerSettings)readoutLayerConfig.DeepClone(); ComputationResultBundle = new ResultBundle(); ReadoutUnitStatCollection = new List <ReadoutUnitErrorStat>(ReadoutLayerConfig.ReadoutUnitsCfg.ReadoutUnitCfgCollection.Count); for (int i = 0; i < ReadoutLayerConfig.ReadoutUnitsCfg.ReadoutUnitCfgCollection.Count; i++) { ReadoutUnitStatCollection.Add(new ReadoutUnitErrorStat(i, ReadoutLayerConfig.ReadoutUnitsCfg.ReadoutUnitCfgCollection[i])); } OneTakesAllGroupStatCollection = new List <OneTakesAllGroupErrorStat>(); if (ReadoutLayerConfig.OneTakesAllGroupsCfg != null) { foreach (OneTakesAllGroupSettings groupCfg in ReadoutLayerConfig.OneTakesAllGroupsCfg.OneTakesAllGroupCfgCollection) { int[] unitIndexes = ReadoutLayerConfig.GetOneTakesAllGroupMemberRUnitIndexes(groupCfg.Name).ToArray(); OneTakesAllGroupStatCollection.Add(new OneTakesAllGroupErrorStat(groupCfg.Name, unitIndexes, ReadoutLayerConfig.ReadoutUnitsCfg.ReadoutUnitCfgCollection)); } } return; }
//Constructor /// <summary> /// Creates initialized instance /// </summary> /// <param name="readoutLayerConfig">Configuration of the Readout Layer</param> public VerificationResults(ReadoutLayerSettings readoutLayerConfig) { ReadoutLayerConfig = (ReadoutLayerSettings)readoutLayerConfig.DeepClone(); ComputationResultBundle = new ResultBundle(); ReadoutUnitStatCollection = new List <ReadoutUnitStat>(ReadoutLayerConfig.ReadoutUnitsCfg.ReadoutUnitCfgCollection.Count); for (int i = 0; i < ReadoutLayerConfig.ReadoutUnitsCfg.ReadoutUnitCfgCollection.Count; i++) { ReadoutUnitStatCollection.Add(new ReadoutUnitStat(i, ReadoutLayerConfig.ReadoutUnitsCfg.ReadoutUnitCfgCollection[i])); } OneWinnerGroupStatCollection = new List <OneWinnerGroupStat>(ReadoutLayerConfig.ReadoutUnitsCfg.OneWinnerGroupCollection.Keys.Count); foreach (string groupName in ReadoutLayerConfig.ReadoutUnitsCfg.OneWinnerGroupCollection.Keys) { ReadoutUnitsSettings.OneWinnerGroup owg = ReadoutLayerConfig.ReadoutUnitsCfg.OneWinnerGroupCollection[groupName]; int[] unitIndexes = new int[owg.Members.Count]; for (int i = 0; i < owg.Members.Count; i++) { unitIndexes[i] = ReadoutLayerConfig.ReadoutUnitsCfg.GetReadoutUnitID(owg.Members[i].Name); } OneWinnerGroupStatCollection.Add(new OneWinnerGroupStat(groupName, unitIndexes, ReadoutLayerConfig.ReadoutUnitsCfg.OneWinnerGroupCollection[groupName].Members)); } return; }