From a6b70060bc34c228153ad906a59ccbad0ed22682 Mon Sep 17 00:00:00 2001 From: Lester Solbakken Date: Tue, 20 Sep 2016 14:13:33 +0200 Subject: Update blog recommendation sample with second phase ranking --- .../application/searchdefinitions/blog_post.sd | 70 ++++++++++++++++------ 1 file changed, 51 insertions(+), 19 deletions(-) (limited to 'sample-apps') 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) + } + } } -- cgit v1.2.3