| 16 | namespace embedx { |
| 17 | |
| 18 | GraphNode* SparseSageEncoder(const std::string& prefix, GraphNode* self_feat, |
| 19 | GraphNode* neigh_feat, |
| 20 | const std::vector<GroupConfigItem3>& items, |
| 21 | bool sparse, bool is_act, double alpha) { |
| 22 | auto* self_embed = |
| 23 | XInputGroupEmbeddingLookup(prefix + "_self", self_feat, items, sparse); |
| 24 | auto* neigh_embed = |
| 25 | XInputGroupEmbeddingLookup(prefix + "_neigh", neigh_feat, items, sparse); |
| 26 | auto* sage_embed = deepx_core::Concat("", {self_embed, neigh_embed}); |
| 27 | if (is_act) { |
| 28 | sage_embed = deepx_core::LeakyRelu("", sage_embed, alpha); |
| 29 | } |
| 30 | return sage_embed; |
| 31 | } |
| 32 | |
| 33 | GraphNode* DenseSageEncoder(const std::string& prefix, GraphNode* hidden, |
| 34 | GraphNode* self_block, GraphNode* neigh_block, |
no test coverage detected