|
@@ -99,19 +99,16 @@ class DSSMLayer(nn.Layer):
|
|
|
return paddle.concat(embedded_features, axis=1)
|
|
|
|
|
|
def forward(self, left_features, right_features):
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
left_vec, right_vec = self.get_vectors(left_features, right_features)
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
|
|
|
sim_score = F.cosine_similarity(
|
|
|
left_vec,
|
|
|
right_vec,
|
|
|
axis=1
|
|
|
).reshape([-1, 1])
|
|
|
-
|
|
|
+
|
|
|
return sim_score, left_vec, right_vec
|
|
|
|
|
|
def get_vectors(self, left_features, right_features):
|
|
@@ -124,22 +121,22 @@ class DSSMLayer(nn.Layer):
|
|
|
left_vec = paddle.reshape(left_embedded, [-1, self.feature_num * self.embedding_dim])
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
for i, layer in enumerate(self._left_tower):
|
|
|
left_vec = layer(left_vec)
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
right_embedded = self._process_features(right_features, self.right_embeddings)
|
|
|
|
|
|
right_vec = paddle.reshape(right_embedded, [-1, self.feature_num * self.embedding_dim])
|
|
|
-
|
|
|
+
|
|
|
for layer in self._right_tower:
|
|
|
right_vec = layer(right_vec)
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
left_vec = F.normalize(left_vec, p=2, axis=1)
|