summaryrefslogtreecommitdiffstats
path: root/sample-apps
diff options
context:
space:
mode:
authorLester Solbakken <lesters@yahoo-inc.com>2016-09-20 14:13:33 +0200
committerLester Solbakken <lesters@yahoo-inc.com>2016-09-20 14:13:33 +0200
commita6b70060bc34c228153ad906a59ccbad0ed22682 (patch)
treef9c1a1532ba42e7f30c432589c7ee8969615fc2f /sample-apps
parentf7f9d775272ff813ae37c4acc05e1fb4c7ae1089 (diff)
Update blog recommendation sample with second phase ranking
Diffstat (limited to 'sample-apps')
-rw-r--r--sample-apps/blog-recommendation/src/main/application/searchdefinitions/blog_post.sd70
1 files changed, 51 insertions, 19 deletions
diff --git a/sample-apps/blog-recommendation/src/main/application/searchdefinitions/blog_post.sd b/sample-apps/blog-recommendation/src/main/application/searchdefinitions/blog_post.sd
index 4e424b59458..b0b53032216 100644
--- a/sample-apps/blog-recommendation/src/main/application/searchdefinitions/blog_post.sd
+++ b/sample-apps/blog-recommendation/src/main/application/searchdefinitions/blog_post.sd
@@ -93,33 +93,65 @@ search blog_post {
type: tensor(user_item_cf[10], input[20])
}
- macro matmul(x, y, dim) {
- expression: sum(x * y, dim)
- }
+ rank-profile nn_tensor {
- # The input to the neural network is the concatenation of the document and query vectors
- macro nn_input() {
- expression {
- matmul(attribute(user_item_cf), constant(input_transform_1), "user_item_cf")
- +
- matmul(query(user_item_cf), constant(input_transform_2), "user_item_cf")
+ # Why no work?
+ macro inline matmul(x, y, dim) {
+ expression: sum(x * y, dim)
}
- }
- macro hidden_layer() {
- expression: relu(matmul(nn_input, constant(W_hidden), "input") + constant(b_hidden))
- }
+ macro matmul_user_item_cf(x, y) {
+ expression: sum(x * y, user_item_cf)
+ }
- macro final_layer() {
- expression: sigmoid(matmul(hidden_layer, constant(W_final), "hidden") + constant(b_final))
- }
+ macro matmul_hidden(x, y) {
+ expression: sum(x * y, hidden)
+ }
- rank-profile nn_tensor {
- first-phase {
+ macro matmul_input(x, y) {
+ expression: sum(x * y, input)
+ }
+
+ macro add(x,y) {
+ expression: x + y
+ }
+
+ # The input to the neural network is the concatenation of the document and query vectors
+ macro nn_input() {
+ expression {
+ matmul_user_item_cf(attribute(user_item_cf), constant(input_transform_1))
+ +
+ matmul_user_item_cf(query(user_item_cf), constant(input_transform_2))
+ }
+ }
+
+ macro hidden_layer() {
expression {
- sum(final_layer)
+ relu(add(matmul_input(nn_input, constant(W_hidden)), constant(b_hidden)))
+
+ # The '+' causes an error. Why?
+ # relu(matmul(nn_input, constant(W_hidden), "input") + constant(b_hidden))
+ }
+ }
+
+ macro final_layer() {
+ expression{
+ sigmoid(add(matmul_hidden(hidden_layer, constant(W_final)), constant(b_final)))
+
+ # Same as above
+ # sigmoid(matmul(hidden_layer, constant(W_final), "hidden") + constant(b_final))
}
}
+
+ first-phase {
+ expression: sum(query(user_item_cf) * attribute(user_item_cf))
+ }
+
+ second-phase {
+ rerank-count: 200
+ expression: sum(final_layer)
+ }
+
}
}