def __init__(self, node_type, path_patterns, max_id, dim, sparse_feature_dims, feature_ids, feature_embedding_dim=16, walk_len=3, left_win_size=1, right_win_size=1, num_negs=5, gamma=5, *args, **kwargs): super(LsHNE, self).__init__(node_type, path_patterns, max_id, *args, **kwargs) self.node_type = node_type self.path_patterns = path_patterns self.max_id = max_id self.dim = dim self.walk_len = walk_len self.left_win_size = left_win_size self.right_win_size = right_win_size self.num_negs = num_negs self.view_num = len(path_patterns) if self.view_num < 1: raise ValueError('View Number must be bigger than 1, got{}'.format( self.view_num)) if not isinstance(sparse_feature_dims, list): raise TypeError( 'Expect list for sparse feature dimsgot {}.'.format( type(sparse_feature_dims).__name__)) self.sparse_feature_dims = sparse_feature_dims self.feature_ids = feature_ids self.feature_embedding_dim = feature_embedding_dim self.raw_fdim = feature_embedding_dim * len(feature_ids) self.feature_embedding_layer = [] for d in sparse_feature_dims: self.feature_embedding_layer.append( layers.SparseEmbedding(d, feature_embedding_dim, combiner="sum")) self.hidden_layer = [{}] * self.view_num for i in range(0, self.view_num): self.hidden_layer[i]['src'] = layers.Dense(256) self.hidden_layer[i]['tar'] = layers.Dense(256) self.out_layer = [{}] * self.view_num for i in range(0, self.view_num): self.out_layer[i]['src'] = layers.Dense(self.dim) self.out_layer[i]['tar'] = layers.Dense(self.dim) self.att_vec = tf.get_variable( 'att_vec', shape=[self.view_num, self.dim], initializer=tf.truncated_normal_initializer(stddev=0.1)) self.gamma = gamma
def create_sparse_embeddings(feature_dims): sparse_embeddings = [ layers.SparseEmbedding(feature_dim, 16) for feature_dim in feature_dims ] return sparse_embeddings