(self, target_embedding, source_embedding, value_embedding)
| 293 | return self.out_projection(out) |
| 294 | |
| 295 | def reprogramming(self, target_embedding, source_embedding, value_embedding): |
| 296 | B, L, H, E = target_embedding.shape |
| 297 | |
| 298 | scale = 1. / sqrt(E) |
| 299 | |
| 300 | scores = torch.einsum("blhe,she->bhls", target_embedding, source_embedding) |
| 301 | |
| 302 | A = self.dropout(torch.softmax(scale * scores, dim=-1)) |
| 303 | reprogramming_embedding = torch.einsum("bhls,she->blhe", A, value_embedding) |
| 304 | |
| 305 | return reprogramming_embedding |