summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorLester Solbakken <lesters@yahoo-inc.com>2016-10-26 17:15:58 +0200
committerLester Solbakken <lesters@yahoo-inc.com>2016-10-26 17:15:58 +0200
commitb6da0a949fe988c77ea2b97e99f3a6b402951de8 (patch)
tree6e2088810c16ba70fa94cadfe5726750c245d237 /searchlib
parent96711fe6066efe4b82c59fb4fb09126479f8f0a3 (diff)
Add relu and sigmoid functions
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java2
-rwxr-xr-xsearchlib/src/main/javacc/RankingExpressionParser.jj6
-rw-r--r--searchlib/src/tests/rankingexpression/rankingexpressionlist2
3 files changed, 9 insertions, 1 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java
index da2e4c87e05..0bdd02c85b5 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Function.java
@@ -29,6 +29,8 @@ public enum Function implements Serializable {
fabs { public double evaluate(double x, double y) { return abs(x); } },
floor { public double evaluate(double x, double y) { return floor(x); } },
isNan { public double evaluate(double x, double y) { return Double.isNaN(x) ? 1.0 : 0.0; } },
+ relu { public double evaluate(double x, double y) { return max(x,0); } },
+ sigmoid { public double evaluate(double x, double y) { return 1.0 / (1.0 + exp(-1.0 * x)); } },
atan2(2) { public double evaluate(double x, double y) { return atan2(x,y); } },
pow(2) { public double evaluate(double x, double y) { return pow(x,y); } },
ldexp(2) { public double evaluate(double x, double y) { return x*pow(2,y); } },
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj
index 8431903f30b..78ad665c414 100755
--- a/searchlib/src/main/javacc/RankingExpressionParser.jj
+++ b/searchlib/src/main/javacc/RankingExpressionParser.jj
@@ -103,6 +103,8 @@ TOKEN :
<IN: "in"> |
<SUM: "sum"> |
<MATCH: "match"> |
+ <RELU: "relu"> |
+ <SIGMOID: "sigmoid"> |
<IDENTIFIER: (["A"-"Z","a"-"z","0"-"9","_","@"](["A"-"Z","a"-"z","0"-"9","_","@","$"])*)>
}
@@ -352,7 +354,9 @@ Function unaryFunctionName() : { }
<CEIL> { return Function.ceil; } |
<FABS> { return Function.fabs; } |
<FLOOR> { return Function.floor; } |
- <ISNAN> { return Function.isNan; }
+ <ISNAN> { return Function.isNan; } |
+ <RELU> { return Function.relu; } |
+ <SIGMOID> { return Function.sigmoid; }
}
Function binaryFunctionName() : { }
diff --git a/searchlib/src/tests/rankingexpression/rankingexpressionlist b/searchlib/src/tests/rankingexpression/rankingexpressionlist
index 2ff1350025b..327f2b161cd 100644
--- a/searchlib/src/tests/rankingexpression/rankingexpressionlist
+++ b/searchlib/src/tests/rankingexpression/rankingexpressionlist
@@ -84,6 +84,8 @@ sqrt(10)
ceil(10)
fabs(10)
floor(10)
+relu(10)
+sigmoid(10)
atan2(10, 20); atan2(10,20)
ldexp(10, 20); ldexp(10,20)
pow(10, 20); pow(10,20)