def __init__(self, input_dim, output_dim, dropout=0., act=tf.nn.relu, placeholders=None, bias=True, featureless=False, sparse_inputs=False, **kwargs): super(DenseLayerWithWeights, self).__init__(**kwargs) self.dropout = dropout self.act = act self.featureless = featureless self.bias = bias self.input_dim = input_dim self.output_dim = output_dim # helper variable for sparse dropout self.sparse_inputs = sparse_inputs if sparse_inputs: self.num_features_nonzero = placeholders['num_features_nonzero'] with tf.variable_scope(self.name + '_vars'): self.vars['weights'] = tf.get_variable('weights', shape=(input_dim, output_dim), dtype=tf.float32, initializer=tf.contrib.layers.xavier_initializer(), regularizer=tf.contrib.layers.l2_regularizer(FLAGS.weight_decay)) if self.bias: self.vars['bias'] = zeros([output_dim], name='bias') if self.logging: self._log_vars()
def __init__(self, input_dim1, input_dim2, placeholders, dropout=False, act=tf.nn.sigmoid, loss_fn='xent', bias=False, bilinear_weights=False, **kwargs): """ Basic class that applies skip-gram-like loss (i.e., dot product of node+target and node and negative samples) Args: bilinear_weights: use a bilinear weight for affinity calculation: u^T A v. If set to false, it is assumed that input dimensions are the same and the affinity will be based on dot product. """ super(BipartiteEdgePredLayer, self).__init__(**kwargs) self.input_dim1 = input_dim1 self.input_dim2 = input_dim2 self.act = act self.bias = bias self.eps = 1e-7 # Margin for hinge loss self.margin = 0.1 self.bilinear_weights = bilinear_weights if dropout: self.dropout = placeholders['dropout'] else: self.dropout = 0. # output a likelihood term self.output_dim = 1 with tf.variable_scope(self.name + '_vars'): # bilinear form if bilinear_weights: #self.vars['weights'] = glorot([input_dim1, input_dim2], # name='pred_weights') self.vars['weights'] = tf.get_variable( 'pred_weights', shape=(input_dim1, input_dim2), dtype=tf.float32, initializer=tf.contrib.layers.xavier_initializer()) if self.bias: self.vars['bias'] = zeros([self.output_dim], name='bias') if loss_fn == 'xent': self.loss_fn = self._xent_loss elif loss_fn == 'skipgram': self.loss_fn = self._skipgram_loss elif loss_fn == 'hinge': self.loss_fn = self._hinge_loss if self.logging: self._log_vars()
def __init__(self, input_dim, output_dim, dropout=0., act=tf.nn.relu, placeholders=None, bias=True, featureless=False, sparse_inputs=False, **kwargs): super(Dense, self).__init__(**kwargs) self.dropout = dropout self.act = act self.featureless = featureless self.bias = bias self.input_dim = input_dim self.output_dim = output_dim # helper variable for sparse dropout self.sparse_inputs = sparse_inputs if sparse_inputs: self.num_features_nonzero = placeholders['num_features_nonzero'] with tf.compat.v1.variable_scope(self.name + '_vars'): self.vars['weights'] = tf.compat.v1.get_variable('weights', shape=(input_dim, output_dim), dtype=tf.float32, initializer=tf.compat.v1.keras.initializers.VarianceScaling(scale=1.0, mode="fan_avg", distribution="uniform"), regularizer=tf.keras.regularizers.l2(0.5 * (FLAGS.weight_decay))) if self.bias: self.vars['bias'] = zeros([output_dim], name='bias') if self.logging: self._log_vars()