Pular para o conteúdo

Como funciona uma camada Linear do PyTorch | Álgebra linear para engenheiros de IA

Ver no idioma original →

Autoria: The Augmented · Assistir no YouTube

Vídeo de autoria do canal indicado, não da IANIA; todos os direitos pertencem ao criador. Transcrição, resumo e tradução gerados automaticamente; o conteúdo no idioma original é preservado na versão em idioma original.

Idioma original: inglês

Vídeo original: How a PyTorch Linear Layer Works | Linear Algebra for AI Engineers · Canal: The Augmented · 00:31 · Assistir no YouTube

Tópicos: Modelos de IA, Open source e ecossistemas de software

No PyTorch, cada neurônio de saída é armazenado como uma linha da matriz de pesos. Em uma camada nn.Linear com 3 entradas e 2 saídas, a matriz de pesos tem dimensão 2 × 3, e cada neurônio combina as três entradas com seus pesos, soma os resultados e adiciona um viés. Na passagem forward, o PyTorch transpõe os pesos para realizar a operação. A diferença em relação à notação matemática está em armazenar os vetores nas linhas ou nas colunas; a ideia é a mesma, apenas transposta.

  • Cada linha da matriz de pesos do PyTorch corresponde a um neurônio de saída.
  • Uma camada com 3 entradas e 2 saídas tem uma matriz de pesos de dimensão 2 × 3.
  • Cada neurônio multiplica as entradas por seus pesos, soma os produtos e adiciona um viés.
  • Na passagem forward, a operação usa a matriz de pesos transposta.
  • A diferença entre as convenções do PyTorch e da matemática está em armazenar os vetores nas linhas ou nas colunas.
  • A matriz transposta organiza os vetores de entrada conforme a convenção matemática apresentada.
Início Capítulo Resumo
00:00 Formato dos pesos e neurônios de saída Uma camada com 3 entradas e 2 saídas tem dois neurônios, armazenados como duas linhas de três pesos.
00:00 Cálculo da saída e transposição Cada neurônio combina as entradas com seus pesos e um viés; na passagem forward, os pesos são transpostos.
00:31 Convenções de vetores em linhas ou colunas O vídeo compara a convenção matemática, que usa vetores coluna, com a do PyTorch, que usa vetores linha.

O PyTorch armazena um neurônio de saída por linha. — 00:00

Dois resultados, dois neurônios, duas linhas de três. — 00:00

É a mesma ideia, apenas transposta. — 00:31

  • PyTorch (ferramenta): Framework usado para implementar camadas de redes neurais, como nn.Linear.
  • nn.Linear (conceito): Camada linear do PyTorch que combina entradas com pesos e um viés para produzir saídas.
  • weight matrix (conceito): Matriz cujas linhas, na convenção do PyTorch descrita no vídeo, representam os neurônios de saída.
  • bias (conceito): Valor somado ao resultado ponderado das entradas de cada neurônio.
  • forward pass (conceito): Etapa em que a camada aplica os pesos e o viés às entradas para calcular as saídas.

00:00 O PyTorch armazena um neurônio de saída por linha. Então, quando você passa nn.Linear(3, 2), com 3 entradas e 2 saídas, os pesos vêm com formato 2 por 3. Um neurônio recebe as três entradas, multiplica cada uma pelo seu próprio peso, soma os resultados, adiciona um bias e produz um número. Duas saídas, dois neurônios, duas linhas com três elementos. Na passagem forward, o PyTorch inverte isso: X @ weight.T mais um bias. O weight invertido tem formato 3 por 2, exatamente o W do último vídeo, em que cada linha é o lugar onde uma direção de entrada

00:31 chega. Então, não pergunte qual é a entrada e qual é a saída. Pergunte onde os vetores de chegada são armazenados: nas linhas ou nas colunas? Na matemática, os vetores são colunas, e W * V usa as colunas. No PyTorch, os vetores são linhas, e X @ W usa as linhas. É a mesma ideia, apenas transposta. nn.Linear armazena os neurônios como linhas e transpõe durante a passagem.

Transcrição original

[00:00] PyTorch stores one output neuron per row. So, when you give an nn.linear 3 in and 2 out, the weight will come back 2 by 3. A neuron takes all three inputs, multiplies each by its own weight, sums them, adds a bias, and outputs one number. Two outputs, two neurons, two rows of three. In the forward pass, PyTorch flips it. X at weight.t plus a bias. The flipped weight is 3 by 2, exactly the W from the last video, where each row is where an input direction

[00:31] lands. So, don’t ask which is in and which is out. Ask where are the landing vectors stored? In the rows or the columns? In math, vectors are columns, and W * V uses the columns. In PyTorch, vectors are rows, and X at W uses the rows. It’s the same idea, just transposed. nn.linear stores neurons as rows and transposes on the way through.