diff options
author | Lester Solbakken <lesters@users.noreply.github.com> | 2016-12-16 15:03:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-16 15:03:35 +0100 |
commit | 7eec9171277f9e153cc2e0dc9be3e79ac8ab0512 (patch) | |
tree | 9b5c2e965a82e44af94e0e58cd18803602ee915a /searchlib | |
parent | ada85141a25350574a32c70dcd2d6430337c6726 (diff) | |
parent | c22bb256aec0b7ca527e14a96a4bae8a8b61adad (diff) |
Merge pull request #1342 from yahoo/bratseth/double-backed-indexed-tensor
Bratseth/double backed indexed tensor
Diffstat (limited to 'searchlib')
2 files changed, 13 insertions, 9 deletions
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java index b994b3e768f..8fa9076993e 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java @@ -196,8 +196,8 @@ public class EvaluationTestCase { "max(tensor0, tensor1)", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:5 }"); tester.assertEvaluates("{ {x:0,y:0}:3, {x:1,y:0}:5 }", "min(tensor0, tensor1)", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:5 }"); - tester.assertEvaluates("{ {x:0,y:0,z:0}:7, {x:0,y:0,z:1}:13, {x:1,y:0,z:0}:21, {x:1,y:0,z:1}:39, {x:0,y:1,z:0}:55 }", - "tensor0 * tensor1", "{ {x:0,y:0}:1, {x:1,y:0}:3, {x:0,y:1}:5 }", "{ {y:0,z:0}:7, {y:1,z:0}:11, {y:0,z:1}:13 }"); + tester.assertEvaluates("{ {x:0,y:0,z:0}:7, {x:0,y:0,z:1}:13, {x:1,y:0,z:0}:21, {x:1,y:0,z:1}:39, {x:0,y:1,z:0}:55, {x:0,y:1,z:1}:0, {x:1,y:1,z:0}:0, {x:1,y:1,z:1}:0 }", + "tensor0 * tensor1", "{ {x:0,y:0}:1, {x:1,y:0}:3, {x:0,y:1}:5, {x:1,y:1}:0 }", "{ {y:0,z:0}:7, {y:1,z:0}:11, {y:0,z:1}:13, {y:1,z:1}:0 }"); tester.assertEvaluates("{ {x:0,y:1,z:0}:35, {x:0,y:1,z:1}:65 }", "tensor0 * tensor1", "tensor(x{},y{}):{ {x:0,y:0}:1, {x:1,y:0}:3, {x:0,y:1}:5 }", "tensor(y{},z{}):{ {y:1,z:0}:7, {y:2,z:0}:11, {y:1,z:1}:13 })"); tester.assertEvaluates("{{x:0,y:0}:0.0}","tensor1 * tensor2 * tensor3", "{ {x:0}:1 }", "{ {x:1,y:0}:1, {x:0,y:0}:1 }", "{ {x:0,y:0}:1 }"); @@ -253,7 +253,7 @@ public class EvaluationTestCase { " * tensor3" + // - model weights application ") + 1.7", "{ {x:0}:1, {x:1}:2 }", "{ {y:0}:3, {y:1}:4 }", "{ {z:0}:5 }", - "{ {x:0,y:0,z:0}:0.5, {x:1,y:0,z:0}:1.5, {x:0,y:0,z:1}:4.5 }"); + "{ {x:0,y:0,z:0}:0.5, {x:1,y:0,z:0}:1.5, {x:0,y:0,z:1}:4.5, {x:0,y:1,z:0}:0, {x:1,y:0,z:1}:0, {x:0,y:1,z:1}:0, {x:1,y:1,z:0}:0, {x:1,y:1,z:1}:0 }"); tester.assertEvaluates("1.0", "sum(tensor0 * tensor1 + 0.5)", "{ {x:0}:0, {x:1}:0 }", "{ {x:0}:1, {x:1}:1 }"); tester.assertEvaluates("0.0", "sum(tensor0 * tensor1 + 0.5)", "{}", "{ {x:0}:1, {x:1}:1 }"); diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTester.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTester.java index 3383a5f794d..2ce3d5b5eca 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTester.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTester.java @@ -33,6 +33,7 @@ public class EvaluationTester { return assertEvaluates(expectedTensor, expressionString, true, tensorArguments); } + // TODO: Test both bound and unbound indexed public RankingExpression assertEvaluates(String expectedTensor, String expressionString, boolean mappedTensors, String ... tensorArgumentStrings) { MapContext context = defaultContext.thawedCopy(); @@ -45,11 +46,12 @@ public class EvaluationTester { argument = Tensor.from(typeFrom(argumentString, mappedTensors), argumentString); context.put("tensor" + (argumentIndex++), new TensorValue(argument)); } - return assertEvaluates(new TensorValue(Tensor.from(expectedTensor)), expressionString, context); + return assertEvaluates(new TensorValue(Tensor.from(expectedTensor)), expressionString, context, + mappedTensors ? "Mapped tensors" : "Indexed tensors"); } public RankingExpression assertEvaluates(Value value, String expressionString) { - return assertEvaluates(value, expressionString, defaultContext); + return assertEvaluates(value, expressionString, defaultContext, ""); } public RankingExpression assertEvaluates(double value, String expressionString) { @@ -57,13 +59,15 @@ public class EvaluationTester { } public RankingExpression assertEvaluates(double value, String expressionString, Context context) { - return assertEvaluates(new DoubleValue(value), expressionString, context); + return assertEvaluates(new DoubleValue(value), expressionString, context, ""); } - public RankingExpression assertEvaluates(Value value, String expressionString, Context context) { + public RankingExpression assertEvaluates(Value value, String expressionString, Context context, String explanation) { try { RankingExpression expression = new RankingExpression(expressionString); - assertEquals(expression.toString(), value, expression.evaluate(context)); + if ( ! explanation.isEmpty()) + explanation = explanation + ": "; + assertEquals(explanation + expression.toString(), value, expression.evaluate(context)); return expression; } catch (ParseException e) { @@ -80,7 +84,7 @@ public class EvaluationTester { else { // convert to indexed TensorType.Builder builder = new TensorType.Builder(); for (TensorType.Dimension dimension : tensor.type().dimensions()) - builder.indexedUnbound(dimension.name()); + builder.indexed(dimension.name()); return builder.build(); } } |