| 
														
															@@ -4,42 +4,37 @@ import paddle.nn.functional as F 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import numpy as np 
														 | 
														
														 | 
														
															 import numpy as np 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 class DSSMLayer(nn.Layer): 
														 | 
														
														 | 
														
															 class DSSMLayer(nn.Layer): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    def __init__(self, feature_num=5, embedding_dim=8, output_dim=16,  
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    def __init__(self, feature_nums=[5,5,5,5,5], embedding_dim=8, output_dim=16,  
														 | 
													
												
											
												
													
														| 
														 | 
														
															                  hidden_layers=[64, 32], hidden_acts=["relu", "relu"]): 
														 | 
														
														 | 
														
															                  hidden_layers=[64, 32], hidden_acts=["relu", "relu"]): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         super(DSSMLayer, self).__init__() 
														 | 
														
														 | 
														
															         super(DSSMLayer, self).__init__() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															          
														 | 
														
														 | 
														
															          
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        self.feature_num = feature_num 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        self.feature_num = len(feature_nums) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         self.embedding_dim = embedding_dim 
														 | 
														
														 | 
														
															         self.embedding_dim = embedding_dim 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         self.output_dim = output_dim 
														 | 
														
														 | 
														
															         self.output_dim = output_dim 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         # 第一层的输入维度是所有特征的embedding拼接 
														 | 
														
														 | 
														
															         # 第一层的输入维度是所有特征的embedding拼接 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         self.hidden_layers = [feature_num * embedding_dim] + hidden_layers + [output_dim] 
														 | 
														
														 | 
														
															         self.hidden_layers = [feature_num * embedding_dim] + hidden_layers + [output_dim] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         self.hidden_acts = hidden_acts 
														 | 
														
														 | 
														
															         self.hidden_acts = hidden_acts 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        # 为每个特征创建embedding层 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+         
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+         
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        # 为每个特征创建对应维度的Embedding层 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         self.left_embeddings = nn.LayerList([ 
														 | 
														
														 | 
														
															         self.left_embeddings = nn.LayerList([ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            nn.Linear( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                1,  
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                embedding_dim, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            nn.Embedding( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                num_embeddings=feature_nums[i], 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                embedding_dim=embedding_dim, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 weight_attr=paddle.ParamAttr( 
														 | 
														
														 | 
														
															                 weight_attr=paddle.ParamAttr( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     initializer=paddle.nn.initializer.XavierNormal() 
														 | 
														
														 | 
														
															                     initializer=paddle.nn.initializer.XavierNormal() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                ), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                bias_attr=paddle.ParamAttr( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    initializer=paddle.nn.initializer.Constant(value=0.0) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 ) 
														 | 
														
														 | 
														
															                 ) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            ) for _ in range(feature_num) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            ) for i in range(self.feature_num) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         ]) 
														 | 
														
														 | 
														
															         ]) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         self.right_embeddings = nn.LayerList([ 
														 | 
														
														 | 
														
															         self.right_embeddings = nn.LayerList([ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            nn.Linear( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                1,  
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                embedding_dim, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            nn.Embedding( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                num_embeddings=feature_nums[i],  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                embedding_dim=embedding_dim, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 weight_attr=paddle.ParamAttr( 
														 | 
														
														 | 
														
															                 weight_attr=paddle.ParamAttr( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     initializer=paddle.nn.initializer.XavierNormal() 
														 | 
														
														 | 
														
															                     initializer=paddle.nn.initializer.XavierNormal() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                ), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                bias_attr=paddle.ParamAttr( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    initializer=paddle.nn.initializer.Constant(value=0.0) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 ) 
														 | 
														
														 | 
														
															                 ) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            ) for _ in range(feature_num) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            ) for i in range(self.feature_num) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         ]) 
														 | 
														
														 | 
														
															         ]) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         # 左视频塔 
														 | 
														
														 | 
														
															         # 左视频塔 
														 |