private Delegate MakeGetter <T>(IRow input) { _host.AssertValue(input); _host.Assert(typeof(T) == _outputItemRawType); ValueGetter <VBuffer <T> > valueGetter = (ref VBuffer <T> dst) => { _idvToTensorAdapter.InitializeValueGetters(input); var inputTensors = new List <Tensor> { _idvToTensorAdapter.GetTensor() }; var outputTensors = _parent.Model.Run(inputTensors); Contracts.Assert(outputTensors.Count() > 0); var values = dst.Values; if (Utils.Size(values) < _outputColType.VectorSize) { values = new T[_outputColType.VectorSize]; } OnnxUtils.CopyTo(outputTensors[0], values); dst = new VBuffer <T>(values.Length, values, dst.Indices); }; return(valueGetter); }
private Delegate MakeGetter <T>(IRow input, int iinfo, ITensorValueGetter[] srcTensorGetters, string[] activeOutputColNames, OutputCache outputCache) { Host.AssertValue(input); ValueGetter <VBuffer <T> > valuegetter = (ref VBuffer <T> dst) => { UpdateCacheIfNeeded(input.Position, srcTensorGetters, activeOutputColNames, outputCache); var tensor = outputCache.Outputs[_parent.Outputs[iinfo]]; var editor = VBufferEditor.Create(ref dst, tensor.GetSize()); OnnxUtils.CopyTo(tensor, editor.Values); dst = editor.Commit(); }; return(valuegetter); }
private Delegate MakeGetter <T>(IRow input) { _host.AssertValue(input); _host.Assert(typeof(T) == _outputItemRawType); ValueGetter <VBuffer <T> > valueGetter = (ref VBuffer <T> dst) => { _idvToTensorAdapter.InitializeValueGetters(input); var inputTensors = new List <Tensor> { _idvToTensorAdapter.GetTensor() }; var outputTensors = _parent.Model.Run(inputTensors); Contracts.Assert(outputTensors.Count() > 0); var editor = VBufferEditor.Create(ref dst, _outputColType.VectorSize); OnnxUtils.CopyTo(outputTensors[0], editor.Values); dst = editor.Commit(); }; return(valueGetter); }