dotnet / dotnet/machinelearning
IndexOutOfRangeException at Microsoft.ML.Data.BufferBuilder`1.AddFeature
- Dominant language
- C#
- Stars
- 9.4k
- Forks
- 2k
- Avg merge
- 2d 20h
- Merged PRs (30d)
- 11
Description
**System Information (please complete the following information):**
- OS & Version: Windows 11 [Version 10.0.22000.376]
- ML.NET Version: ML.NET v1.7.0
- .NET Version: .NET 6.0
- ML.NET Model Builder: ML.NET Model Builder 2022 v16.9.2.2205303
**Describe the bug**
I get `IndexOutOfRangeException` when calling `PredictionEngine`'s `Predict` method. The exception is thrown in the [AddFeature method](https://github.com/dotnet/machinelearning/blob/52ddbcd0a57b440e60e43e6cb39b49fe55bdfe55/src/Microsoft.ML.Data/Data/BufferBuilder.cs#L155) of the BufferBuilder class.
```
at Microsoft.ML.Data.BufferBuilder`1.AddFeature(Int32 index, T value)
at Microsoft.ML.Transforms.NormalizeTransform.AffineColumnFunction.Sng.ImplVec.FillValues(VBuffer`1& input, BufferBuilder`1 bldr, Single[] scale)
at Microsoft.ML.Transforms.NormalizeTransform.AffineColumnFunction.Sng.ImplVec.<>c__DisplayClass5_0.b__0(VBuffer`1& dst)
at Microsoft.ML.Data.TypedCursorable`1.TypedRowBase.<>c__DisplayClass8_0`1.b__0(TRow row)
at Microsoft.ML.Data.TypedCursorable`1.TypedRowBase.FillValues(TRow row)
at Microsoft.ML.Data.TypedCursorable`1.RowImplementation.FillValues(TRow row)
at Microsoft.ML.PredictionEngineBase`2.FillValues(TDst prediction)
at Microsoft.ML.PredictionEngine`2.Predict(TSrc example, TDst& prediction)
at Microsoft.ML.PredictionEngineBase`2.Predict(TSrc example)
at BBD_SleepLogger.MLModel_IsAttached.Predict(ModelInput input) in C:\Work\BioBalanceDetector\Software\Source\BBDProto08\BBD.SleepLogger\MLModel_IsAttached.consumption.cs:line 30809
at BBD.SleepLogger.Program.EvaluateIndicators(ILogger logger, Int32 index, FftData inputData) in C:\Work\BioBalanceDetector\Software\Source\BBDProto08\BBD.SleepLogger\Program.cs:line 610
at BBD.SleepLogger.Program.<>c__DisplayClass26_2.b__1() in C:\Work\BioBalanceDetector\Software\Source\BBDProto08\BBD.SleepLogger\Program.cs:line 467
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
```
**To Reproduce**
Steps to reproduce the behavior:
1. Go to Solution Explorer, select your project
2. Right click, Add, Machine Learning Project
3. Set your data source, and labels, run the training to have the generated code
4. Consume the data by using the generated code, fill the `ModelInput` with values and call `MLModel.Predit(ModelInput)` method
**Expected behavior**
I was expecting to have a `ModelOutput` object returned, but I got the above exception instead.
It would be also great to have a more detailed exception to help the bug hunting if it is caused by misconfiguration on the user's part.
**Screenshots, Code, Sample Projects**

**Additional context**
Probably not a critical information, but my data source is a ~360 MB big CSV file with 5120 float feature columns, 6 label columns (of which 5 are ignored for the training) and it has 5500 rows.
Contributor guide
Assessment
This issue has not been assessed yet.