From ed62f0edf0c7c5e0b2de59157562b292bc0d4d0b Mon Sep 17 00:00:00 2001 From: "pieths.dev@gmail.com" Date: Tue, 11 Feb 2020 15:28:41 -0800 Subject: [PATCH 1/2] Fix off by 1 error with the cats_int64s attribute for the OneHotEncoder ONNX operator. --- src/Microsoft.ML.Data/Transforms/KeyToVector.cs | 2 +- .../BinaryClassification/BreastCancer/OneHotBagPipeline.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.ML.Data/Transforms/KeyToVector.cs b/src/Microsoft.ML.Data/Transforms/KeyToVector.cs index 6c3154104e..d172fbada9 100644 --- a/src/Microsoft.ML.Data/Transforms/KeyToVector.cs +++ b/src/Microsoft.ML.Data/Transforms/KeyToVector.cs @@ -705,7 +705,7 @@ private void SaveAsOnnxCore(OnnxContext ctx, int iinfo, ColInfo info, string src opType = "OneHotEncoder"; var node = ctx.CreateNode(opType, castOutput, encodedVariableName, ctx.GetNodeName(opType)); - node.AddAttribute("cats_int64s", Enumerable.Range(0, info.TypeSrc.GetItemType().GetKeyCountAsInt32(Host)).Select(x => (long)x)); + node.AddAttribute("cats_int64s", Enumerable.Range(1, info.TypeSrc.GetItemType().GetKeyCountAsInt32(Host)).Select(x => (long)x)); node.AddAttribute("zeros", true); if (_parent._columns[iinfo].OutputCountVector) { diff --git a/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/OneHotBagPipeline.txt b/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/OneHotBagPipeline.txt index 586220cd6c..6822e97818 100644 --- a/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/OneHotBagPipeline.txt +++ b/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/OneHotBagPipeline.txt @@ -102,7 +102,6 @@ { "name": "cats_int64s", "ints": [ - "0", "1", "2", "3", @@ -111,7 +110,8 @@ "6", "7", "8", - "9" + "9", + "10" ], "type": "INTS" }, From 6da9fceca99636dfc7a49e40b9b209e3531957e8 Mon Sep 17 00:00:00 2001 From: "pieths.dev@gmail.com" Date: Tue, 11 Feb 2020 16:28:45 -0800 Subject: [PATCH 2/2] Fix a few more tests which were failing due to incorrect cats_int64s values. --- .../BreastCancer/ExcludeVariablesInOnnxConversion.txt | 4 ++-- .../BinaryClassification/BreastCancer/ModelWithLessIO.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/ExcludeVariablesInOnnxConversion.txt b/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/ExcludeVariablesInOnnxConversion.txt index b9c6508af7..d37a3a39db 100644 --- a/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/ExcludeVariablesInOnnxConversion.txt +++ b/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/ExcludeVariablesInOnnxConversion.txt @@ -102,7 +102,6 @@ { "name": "cats_int64s", "ints": [ - "0", "1", "2", "3", @@ -111,7 +110,8 @@ "6", "7", "8", - "9" + "9", + "10" ], "type": "INTS" }, diff --git a/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/ModelWithLessIO.txt b/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/ModelWithLessIO.txt index 9cb2ba4450..22273e89f4 100644 --- a/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/ModelWithLessIO.txt +++ b/test/BaselineOutput/Common/Onnx/BinaryClassification/BreastCancer/ModelWithLessIO.txt @@ -100,7 +100,6 @@ { "name": "cats_int64s", "ints": [ - "0", "1", "2", "3", @@ -108,7 +107,8 @@ "5", "6", "7", - "8" + "8", + "9" ], "type": "INTS" },