Browse Source

add infer code

often 6 months ago
parent
commit
b2f83477c8

+ 1 - 1
recommend-model-produce/src/main/python/models/dssm/net.py

@@ -98,7 +98,7 @@ class DSSMLayer(nn.Layer):
    
         return paddle.concat(embedded_features, axis=1)
 
-    def forward(self, left_features, right_features, is_infer):
+    def forward(self, left_features, right_features, is_infer=False):
         if is_infer:
             left_vec = get_leftvectors(left_features)
             return left_vec

+ 29 - 33
recommend-model-produce/src/main/python/models/dssm/static_model.py

@@ -51,11 +51,9 @@ class StaticModel():
             hidden_acts=self.hidden_acts
         )
 
-    
-
         if is_infer:
             left_features = input
-            left_vec = dssm_model(left_features)
+            left_vec = dssm_model(left_features,None,is_infer=True)
             self.inference_target_var = left_vec
             fetch_dict = {
                 'left_vector': left_vec
@@ -63,42 +61,40 @@ class StaticModel():
             return fetch_dict
         else:
             label,left_features, right_features = input
+            # 获取相似度和特征向量
+            sim_score, left_vec, right_vec = dssm_model(left_features, right_features)
 
+            self.inference_target_var = sim_score
+            self.left_vector = left_vec
+            self.right_vector = right_vec
 
-        # 获取相似度和特征向量
-        sim_score, left_vec, right_vec = dssm_model(left_features, right_features)
-
-        self.inference_target_var = sim_score
-        self.left_vector = left_vec
-        self.right_vector = right_vec
 
 
+            # 计算损失
+            # 使用带margin的二元交叉熵损失
+            pos_mask = paddle.cast(label > 0.5, 'float32')
+            neg_mask = 1.0 - pos_mask
+            
+            positive_loss = -pos_mask * paddle.log(paddle.clip(sim_score, 1e-8, 1.0))
+            negative_loss = -neg_mask * paddle.log(paddle.clip(1 - sim_score + self.margin, 1e-8, 1.0))
+            
+            loss = positive_loss + negative_loss
+            avg_cost = paddle.mean(loss)
+            
+            self._cost = avg_cost
 
-        # 计算损失
-        # 使用带margin的二元交叉熵损失
-        pos_mask = paddle.cast(label > 0.5, 'float32')
-        neg_mask = 1.0 - pos_mask
-        
-        positive_loss = -pos_mask * paddle.log(paddle.clip(sim_score, 1e-8, 1.0))
-        negative_loss = -neg_mask * paddle.log(paddle.clip(1 - sim_score + self.margin, 1e-8, 1.0))
-        
-        loss = positive_loss + negative_loss
-        avg_cost = paddle.mean(loss)
-        
-        self._cost = avg_cost
+            # 计算accuracy
+            predictions = paddle.cast(sim_score > 0.5, 'float32')
+            accuracy = paddle.mean(paddle.cast(paddle.equal(predictions, label), 'float32'))
 
-        # 计算accuracy
-        predictions = paddle.cast(sim_score > 0.5, 'float32')
-        accuracy = paddle.mean(paddle.cast(paddle.equal(predictions, label), 'float32'))
-
-        fetch_dict = {
-            'loss': avg_cost,
-            'accuracy': accuracy,
-            #'similarity': sim_score,
-            #'left_vector': left_vec,
-            #'right_vector': right_vec
-        }
-        return fetch_dict
+            fetch_dict = {
+                'loss': avg_cost,
+                'accuracy': accuracy,
+                #'similarity': sim_score,
+                #'left_vector': left_vec,
+                #'right_vector': right_vec
+            }
+            return fetch_dict
 
     def create_optimizer(self, strategy=None):
         optimizer = paddle.optimizer.Adam(