Внедрение собственного внимания - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь реализовать свое внимание в Pytorch.Мне нужно вычислить следующие выражения:

Функция подобия S (2-мерная), P (2-мерная), C '

S [i] [j] = W1 * inp [i]+ W2 * inp [j] + W3 * x1 [i] * inp [j]

P [i] [j] = e ^ (S [i] [j]) / Сумма для всех j (e ^ (S [i]))

в основном, P - функция softmax

C '[i] = Сумма (для всех j) P [i] [j] * x1 [j]

Я попробовал следующий код, используя циклы for

        for i in range(self.dim):
            for j in range(self.dim):
                S[i][j] = self.W1 * x1[i] + self.W2 * x1[j] + self.W3 * x1[i] * x1[j]

        for i in range(self.dim):
            for j in range(self.dim):
                P[i][j] = torch.exp(S[i][j]) / torch.sum( torch.exp(S[i]))

        # attend

        for i in range(self.dim):
            out[i] = 0
            for j in range(self.dim):
                out[i] += P[i][j] * x1[j]

Есть ли более быстрый способ реализовать это в Pytorch?

...