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) { _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); }