Beispiel #1
0
 def call(self, x: tf.Tensor, *args, **kw_args) -> tf.Tensor:
     size = x.size()
     x = x.view(*size[:2], -1)
     f, g, h = self.query(x), self.key(x), self.value(x)
     # beta = F.softmax(torch.bmm(f.permute(0, 2, 1).contiguous(), g), dim=1)
     # o = self.gamma * torch.bmm(h, beta) + x
     return None  # o.view(*size).contiguous()
Beispiel #2
0
    def get_energies(self, y: tf.Tensor, weights_in_time: tf.Tensor):
        weight_sum = tf.cond(tf.greater(weights_in_time.size(), 0),
                             lambda: tf.reduce_sum(weights_in_time, axis=0),
                             lambda: 0.0)

        coverage = weight_sum / self.fertility * self.attention_mask
        coverage_exp = tf.expand_dims(tf.expand_dims(coverage, -1), -1)
        logits = tf.reduce_sum(
            self.similarity_bias_vector *
            tf.tanh(self.hidden_features + y +
                    self.coverage_weights * coverage_exp), [2, 3])

        return logits
Beispiel #3
0
    def get_energies(self, y: tf.Tensor, weights_in_time: tf.Tensor):
        weight_sum = tf.cond(
            tf.greater(weights_in_time.size(), 0),
            lambda: tf.reduce_sum(weights_in_time, axis=0),
            lambda: 0.0)

        coverage = weight_sum / self.fertility * self.attention_mask
        coverage_exp = tf.expand_dims(tf.expand_dims(coverage, -1), -1)
        logits = tf.reduce_sum(
            self.similarity_bias_vector * tf.tanh(
                self.hidden_features + y
                + self.coverage_weights * coverage_exp),
            [2, 3])

        return logits