(self, metapath, fanouts, dim,
aggregator='mean', concat=False, shared_aggregators=None,
feature_idx=-1, feature_dim=0, max_id=-1,
use_feature=None, use_id=None,
sparse_feature_idx=-1, sparse_feature_max_id=-1,
embedding_dim=16, use_hash_embedding=False,
use_residual=False, shared_node_encoder=None, **kwargs)
| 425 | return new_aggregators |
| 426 | |
| 427 | def __init__(self, metapath, fanouts, dim, |
| 428 | aggregator='mean', concat=False, shared_aggregators=None, |
| 429 | feature_idx=-1, feature_dim=0, max_id=-1, |
| 430 | use_feature=None, use_id=None, |
| 431 | sparse_feature_idx=-1, sparse_feature_max_id=-1, |
| 432 | embedding_dim=16, use_hash_embedding=False, |
| 433 | use_residual=False, shared_node_encoder=None, **kwargs): |
| 434 | super(SageEncoder, self).__init__(**kwargs) |
| 435 | if len(metapath) != len(fanouts): |
| 436 | raise ValueError('Len of metapath must be the same as fanouts.') |
| 437 | if use_feature is not None or use_id is not None: |
| 438 | tf.logging.warning('use_feature is deprecated ' |
| 439 | 'and would not have any effect.') |
| 440 | |
| 441 | self.metapath = metapath |
| 442 | self.fanouts = fanouts |
| 443 | self.num_layers = len(metapath) |
| 444 | self.concat = concat |
| 445 | self.feature_dim = feature_dim |
| 446 | self.sparse_feature_idx = sparse_feature_idx |
| 447 | self.sparse_feature_max_id = sparse_feature_max_id |
| 448 | self.use_hash_embedding = use_hash_embedding |
| 449 | self.embedding_dim = embedding_dim |
| 450 | |
| 451 | if shared_node_encoder: |
| 452 | self._node_encoder = shared_node_encoder |
| 453 | else: |
| 454 | self._node_encoder = ShallowEncoder( |
| 455 | feature_idx=feature_idx, feature_dim=feature_dim, |
| 456 | max_id=max_id if use_id else -1, |
| 457 | sparse_feature_idx=sparse_feature_idx, |
| 458 | sparse_feature_max_id=sparse_feature_max_id, |
| 459 | embedding_dim=embedding_dim, |
| 460 | use_hash_embedding=use_hash_embedding) |
| 461 | |
| 462 | layer0_dim = self._node_encoder.output_dim |
| 463 | self.dims = [layer0_dim] + [dim] * self.num_layers |
| 464 | |
| 465 | if shared_aggregators is not None: |
| 466 | self.aggregators = shared_aggregators |
| 467 | else: |
| 468 | self.aggregators = self.create_aggregators( |
| 469 | dim, self.num_layers, aggregator, concat=concat) |
| 470 | self._max_id = max_id |
| 471 | |
| 472 | def node_encoder(self, inputs): |
| 473 | return self._node_encoder(inputs) |
nothing calls this directly
no test coverage detected