private BootstrapSamplingTransformer(IHost host, ModelLoadContext ctx, IDataView input) : base(host, input) { host.AssertValue(ctx); host.AssertValue(input); // *** Binary format *** // byte: is the compliment sample, that is, an out-of-bag sample // uint: seed0 // uint: seed1 // uint: seed2 // uint: seed3 // byte: input source should be shuffled // int: size of the output pool size _complement = ctx.Reader.ReadBoolByte(); _state = TauswortheHybrid.State.Load(ctx.Reader); _shuffleInput = ctx.Reader.ReadBoolByte(); _poolSize = ctx.Reader.ReadInt32(); Host.CheckDecode(_poolSize >= 0); }
public TransformInfo(IHost host, ApproximatedKernelMappingEstimator.ColumnOptions column, int d, float avgDist) { Contracts.AssertValue(host); SrcDim = d; NewDim = column.Rank; host.CheckUserArg(NewDim > 0, nameof(column.Rank)); _useSin = column.UseCosAndSinBases; var seed = column.Seed; _rand = seed.HasValue ? RandomUtils.Create(seed) : RandomUtils.Create(host.Rand); _state = _rand.GetState(); var generator = column.Generator; _matrixGenerator = generator.GetRandomNumberGenerator(avgDist); int roundedUpD = RoundUp(NewDim, _cfltAlign); int roundedUpNumFeatures = RoundUp(SrcDim, _cfltAlign); RndFourierVectors = new AlignedArray(roundedUpD * roundedUpNumFeatures, CpuMathUtils.GetVectorAlignment()); RotationTerms = _useSin ? null : new AlignedArray(roundedUpD, CpuMathUtils.GetVectorAlignment()); InitializeFourierCoefficients(roundedUpNumFeatures, roundedUpD); }
public TransformInfo(IHostEnvironment env, ModelLoadContext ctx, int colValueCount, string directoryName) { env.AssertValue(env); env.Assert(colValueCount > 0); // *** Binary format *** // int: d (number of untransformed features) // int: NewDim (number of transformed features) // bool: UseSin // uint[4]: the seeds for the pseudo random number generator. SrcDim = ctx.Reader.ReadInt32(); env.CheckDecode(SrcDim == colValueCount); NewDim = ctx.Reader.ReadInt32(); env.CheckDecode(NewDim > 0); _useSin = ctx.Reader.ReadBoolByte(); var length = ctx.Reader.ReadInt32(); env.CheckDecode(length == 4); _state = TauswortheHybrid.State.Load(ctx.Reader); _rand = new TauswortheHybrid(_state); env.CheckDecode(ctx.Repository != null && ctx.LoadModelOrNull <IFourierDistributionSampler, SignatureLoadModel>(env, out _matrixGenerator, directoryName)); // initialize the transform matrix int roundedUpD = RoundUp(NewDim, _cfltAlign); int roundedUpNumFeatures = RoundUp(SrcDim, _cfltAlign); RndFourierVectors = new AlignedArray(roundedUpD * roundedUpNumFeatures, CpuMathUtils.GetVectorAlignment()); RotationTerms = _useSin ? null : new AlignedArray(roundedUpD, CpuMathUtils.GetVectorAlignment()); InitializeFourierCoefficients(roundedUpNumFeatures, roundedUpD); }