Почему мы изменяем ключ, запрос и тензоры ценностей в многоуровневом внимании?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему мы изменяем ключ, запрос и тензоры ценностей в многоуровневом внимании?

Сообщение Anonymous »

В моей реализации многоуровневого внимания у меня есть их в __init __ ()

Код: Выделить всё

class MultiHeadAttentionLayer(nn.Module):
def __init__(self,d_in,d_out,context_length,dropout,num_heads,use_bias=False):
super().__init__()
self.d_out=d_out
self.num_heads=num_heads
# In multi-head attention, the output dimension (d_out) is split across multiple attention heads.
# Each head processes a portion of the total output dimensions independently before being concatenated back together.
self.head_dim=d_out//num_heads
self.query_weight = nn.Linear(d_in, d_out, bias=use_bias)
self.key_weight = nn.Linear(d_in, d_out, bias=use_bias)
self.value_weight = nn.Linear(d_in, d_out, bias=use_bias)
< /code>
Это метод прямого < /p>
def forward(self,x):
batch_size,sequence_length,d_in=x.shape
keys=self.key_weight(x)
queries=self.query_weight(x)
values=self.value_weight(x)
# RESHAPING
# .view() is a PyTorch tensor method that reshapes a tensor without changing its underlying data. It returns a new tensor with the same data but in a different shape.
keys=keys.view(batch_size,sequence_length,self.num_heads,self.head_dim)
values=values.view(batch_size,sequence_length,self.num_heads,self.head_dim)
queries=queries.view(batch_size,sequence_length,self.num_heads,self.head_dim)
Я понимаю, что d_out разделен на несколько голов внимания, но я не совсем уверен, почему это изменение необходимо. Как добавление num_heads в качестве нового измерения влияет на вычисление внимания, и что произойдет, если мы пропустим этот шаг и сохранили форму как «batch_size, sequence_length, d_in»

Подробнее здесь: https://stackoverflow.com/questions/795 ... -attention
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему NavigationLink иногда не работает, даже если мы изменяем переменную isActive?
    Anonymous » » в форуме IOS
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous
  • Соответствующий способ обработки исключений в многоуровневом приложении Java
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Будут ли в многоуровневом планировщике очередей процессы с более высоким приоритетом вытеснять уже запущенные процессы с
    Anonymous » » в форуме Linux
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • Переопределить генераторы ценностей EF Core
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Переопределить генераторы ценностей EF Core
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»