|
@@ -99,19 +99,16 @@ class DSSMLayer(nn.Layer):
|
|
|
return paddle.concat(embedded_features, axis=1)
|
|
|
|
|
|
def forward(self, left_features, right_features):
|
|
|
- # 获取两个视频的特征表示
|
|
|
- #paddle.static.Print(left_features, message="lqc left model input shape:")
|
|
|
- #paddle.static.Print(right_features, message="lqc right model input shape:")
|
|
|
+ # 获取两个视频的特征表示
|
|
|
left_vec, right_vec = self.get_vectors(left_features, right_features)
|
|
|
- #paddle.static.Print(left_vec, message="lqc left model output shape:")
|
|
|
- #paddle.static.Print(right_vec, message="lqc right model output shape:")
|
|
|
+
|
|
|
# 计算相似度
|
|
|
sim_score = F.cosine_similarity(
|
|
|
left_vec,
|
|
|
right_vec,
|
|
|
axis=1
|
|
|
).reshape([-1, 1])
|
|
|
- #paddle.static.Print(sim_score, message="lqc sim_score shape:")
|
|
|
+
|
|
|
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])
|
|
|
|
|
|
|
|
|
- #paddle.static.Print(left_vec, message=f"lqc lqc left_vec:")
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
for i, layer in enumerate(self._left_tower):
|
|
|
left_vec = layer(left_vec)
|
|
|
- #paddle.static.Print(left_vec, message=f"After left layer {i}:")
|
|
|
+
|
|
|
|
|
|
# 处理右视频特征
|
|
|
right_embedded = self._process_features(right_features, self.right_embeddings)
|
|
|
# right_vec = right_embedded
|
|
|
right_vec = paddle.reshape(right_embedded, [-1, self.feature_num * self.embedding_dim])
|
|
|
- #paddle.static.Print(right_vec, message=f"lqc lqc left_vec:")
|
|
|
+
|
|
|
for layer in self._right_tower:
|
|
|
right_vec = layer(right_vec)
|
|
|
- #paddle.static.Print(right_vec, message=f"After left layer {i}:")
|
|
|
+
|
|
|
|
|
|
# 确保输出是L2归一化的
|
|
|
left_vec = F.normalize(left_vec, p=2, axis=1)
|