Ejemplo n.º 1
0
def composite_layer(inputs, mask, hparams, for_output=False):
    """Composite layer."""
    x = inputs

    # Applies ravanbakhsh on top of each other.
    if hparams.composite_layer_type == "ravanbakhsh":
        for layer in xrange(hparams.layers_per_layer):
            with tf.variable_scope(".%d" % layer):
                x = common_layers.ravanbakhsh_set_layer(
                    hparams.hidden_size,
                    x,
                    mask=mask,
                    sequential=for_output,
                    dropout=hparams.relu_dropout)

    # Transforms elements to get a context, and then uses this in a final layer.
    elif hparams.composite_layer_type == "reembedding":
        # Transform elements n times and then pool.
        for layer in xrange(hparams.layers_per_layer):
            with tf.variable_scope("sub_layer_%d" % layer):
                x = common_layers.linear_set_layer(
                    hparams.hidden_size, x, dropout=hparams.relu_dropout)
                if for_output:
                    context = common_layers.running_global_pool_1d(x)
                else:
                    context = common_layers.global_pool_1d(x, mask=mask)
        # Final layer.
        x = common_layers.linear_set_layer(hparams.hidden_size,
                                           x,
                                           context=context,
                                           dropout=hparams.relu_dropout)
    return x
Ejemplo n.º 2
0
 def testRavanbakhshSetLayer(self):
   x1 = np.random.rand(5, 4, 11)
   x1_ = tf.Variable(x1, dtype=tf.float32)
   layer = common_layers.ravanbakhsh_set_layer(32, x1_)
   self.evaluate(tf.global_variables_initializer())
   actual = self.evaluate(layer)
   self.assertEqual(actual.shape, (5, 4, 32))
Ejemplo n.º 3
0
 def testRavanbakhshSetLayer(self):
     x1 = np.random.rand(5, 4, 11)
     x1_ = tf.Variable(x1, dtype=tf.float32)
     layer = common_layers.ravanbakhsh_set_layer(32, x1_)
     self.evaluate(tf.global_variables_initializer())
     actual = self.evaluate(layer)
     self.assertEqual(actual.shape, (5, 4, 32))