public void CloneState() { if (Interlocked.Increment(ref _parent.StateRefCount) > 1) { State = (SrCnnStateBase)_parent.StateRef.Clone(); } }
public Mapper(IHostEnvironment env, SrCnnTransformBase <TInput, TState> parent, DataViewSchema inputSchema) { Contracts.CheckValue(env, nameof(env)); _host = env.Register(nameof(Mapper)); _host.CheckValue(inputSchema, nameof(inputSchema)); _host.CheckValue(parent, nameof(parent)); if (!inputSchema.TryGetColumnIndex(parent.InputColumnName, out _inputColumnIndex)) { throw _host.ExceptSchemaMismatch(nameof(inputSchema), "input", parent.InputColumnName); } var colType = inputSchema[_inputColumnIndex].Type; if (colType != NumberDataViewType.Single) { throw _host.ExceptSchemaMismatch(nameof(inputSchema), "input", parent.InputColumnName, "Single", colType.ToString()); } _parent = parent; _parentSchema = inputSchema; _slotNames = new VBuffer <ReadOnlyMemory <char> >(_parent.OutputLength, new[] { "Alert".AsMemory(), "Raw Score".AsMemory(), "Mag".AsMemory() }); State = (SrCnnStateBase)_parent.StateRef; }
private Action <long> MakePinger(DataViewRow input, SrCnnStateBase state) { _host.AssertValue(input); var srcGetter = input.GetGetter <TInput>(input.Schema[_inputColumnIndex]); Action <long> pinger = (long rowPosition) => { TInput src = default; srcGetter(ref src); state.UpdateState(ref src, rowPosition, _parent.WindowSize > 0); }; return(pinger); }
private Delegate MakeGetter(DataViewRow input, SrCnnStateBase state) { _host.AssertValue(input); var srcGetter = input.GetGetter <TInput>(input.Schema[_inputColumnIndex]); ProcessData processData = _parent.WindowSize > 0 ? (ProcessData)state.Process : state.ProcessWithoutBuffer; ValueGetter <VBuffer <double> > valueGetter = (ref VBuffer <double> dst) => { TInput src = default; srcGetter(ref src); processData(ref src, ref dst); }; return(valueGetter); }
private Action <PingerArgument> MakePinger(DataViewRow input, SrCnnStateBase state) { _host.AssertValue(input); var srcGetter = input.GetGetter <TInput>(input.Schema[_inputColumnIndex]); Action <PingerArgument> pinger = (PingerArgument args) => { if (args.DontConsumeSource) { return; } TInput src = default; srcGetter(ref src); state.UpdateState(ref src, args.RowPosition, _parent.WindowSize > 0); }; return(pinger); }