/// <summary> /// Instantiate FeaturesInFeatureOut fusion strategy by providing other fusion strategies whose output would be used as an input for this fusion. /// </summary> /// <param name="fusionStrategies"></param> public FeaturesInFeatureOut(List <IFusionStrategy> fusionStrategies) { FeatureBuffer = new CoreBuffer <double[]>(OnBufferFinished, fusionStrategies.Count); FusionStrategies = fusionStrategies; int TmpIndex = 0; FusionStrategies.ForEach((IFusionStrategy fusionStrategy) => { fusionStrategy.Id = TmpIndex; TmpIndex++; fusionStrategy.OnFusionFinished = ((dynamic output) => { FeatureBuffer.Push(((List <double>)output).ToArray(), fusionStrategy.Id); /*if (IFusionStrategyFinished == FusionStrategies.Count) * { * if(FusionStrategies.Count == 1) * { * FeatureVector = output; * } * Fuse(); * } * else * { * FeatureVector.AddRange(output); * IFusionStrategyFinished++; * }*/ }); }); }
/// <summary> /// Instantiate FeaturesInFeatureOut fusion strategy by setting important configurations. /// </summary> /// <param name="data">Data to be fuse.</param> public FeaturesInFeatureOut(List <double[]> data) { Data = data; StartReading = Fuse; StopReading = Empty; FeatureBuffer = new CoreBuffer <double[]>(OnBufferFinished, 1); }
/// <summary> /// Instantiate FeaturesInFeatureOut fusion strategy by setting the reader. /// </summary> /// <param name="reader">Reader to be used.</param> public FeaturesInFeatureOut(IReader reader) { DataReader = reader; DataReader.OnReadFinished = OnReadFinished; StartReading = DataReader.Start; StopReading = DataReader.Stop; FeatureBuffer = new CoreBuffer <double[]>(OnBufferFinished, 1); }