Pular para o conteúdo principal

Codificação posicional explicada: dando aos transformers senso de ordem

Entenda como transformers rastreiam a ordem das palavras, compare codificações senoidais, aprendidas, relativas, RoPE e ALiBi, e veja uma implementação em PyTorch.
Atualizado 14 de ago. de 2026  · 14 min lido

Explorar com IA

ChatGPTClaudePerplexity

Imagine tentar ler um romance em que cada palavra na página foi embaralhada em uma ordem aleatória. Mesmo entendendo cada palavra, a trama se perde completamente, porque a ordem das palavras define o significado. Quando engenheiros começaram a projetar Large Language Models (LLMs), eles enfrentaram um obstáculo parecido: como ensinar um modelo a entender a sequência das palavras se seu mecanismo principal processa tudo ao mesmo tempo?

É aí que entra a codificação posicional. Neste artigo, vamos explorar como a codificação posicional funciona por dentro e como ela dá aos transformers a noção de ordem. Vamos acompanhar sua evolução das fórmulas senoides originais até os embeddings rotacionais modernos e como implementá-la no seu próximo projeto de machine learning. Se você é novo nessa arquitetura, recomendo começar pelo nosso guia sobre como transformers funcionam.

Domine o aprendizado profundo em Python

Desenvolva habilidades de aprendizagem profunda sob demanda com Python.
Comece a Aprender De Graça

O que é codificação posicional?

Codificação posicional é uma técnica para que redes neurais entendam a ordem sequencial dos dados de entrada. Ela funciona como um conjunto de coordenadas que representa a posição relativa ou absoluta de um token e é mesclada com a representação padrão dos seus dados.

Antes de o texto entrar em uma rede neural, as palavras são convertidas em formatos numéricos contínuos chamados embeddings. No entanto, embeddings padrão capturam apenas o significado semântico: eles não informam nada sobre a posição de uma palavra em um texto. Você pode aprender exatamente como esse processo funciona fazendo nosso curso Introduction to Embeddings with the OpenAI API.

A codificação posicional é uma camada matemática adicional adicionada diretamente a esses embeddings de tokens. Ao combinar a representação semântica com um carimbo posicional, o modelo transformer consegue distinguir palavras idênticas que aparecem em partes diferentes da frase.

O problema da invariância a permutações

Dados sequenciais dependem fortemente da ordem. Em linguagem natural, a frase "the dog bit the man" tem um significado totalmente diferente de "the man bit the dog".

O problema de invariância a permutações em self-attention

Historicamente, Redes Neurais Recorrentes (RNNs) e LSTMs (Long Short-Term Memory) lidavam com isso de forma inerente. Elas processavam tokens sequencialmente, ou seja, a rede só ingeria matematicamente a segunda palavra depois de terminar a primeira. De forma parecida, Redes Neurais Convolucionais (CNNs) processam dados com janelas deslizantes locais que capturam o arranjo espacial de pixels ou de palavras vizinhas.

Transformers abandonam completamente o processamento sequencial. Eles processam todos os tokens em paralelo. O motor central de um transformer é o mecanismo de self-attention, que calcula, ao mesmo tempo, escores de relacionamento par a par entre todos os tokens da sequência. Matematicamente, self-attention é invariante a permutações. Se você embaralhar a sequência de entrada, o mecanismo produzirá exatamente os mesmos escores de atenção para cada par de palavras.

Sem um mecanismo para preservar a ordem, o modelo perde totalmente a informação sequencial. O significado semântico colapsa em um saco de palavras sem ordem. A codificação posicional resolve a invariância a permutações alterando forçosamente os vetores de entrada para que o mecanismo de atenção registre tokens na posição 1 de forma diferente dos tokens na posição 10.

Como a codificação posicional funciona?

A codificação posicional atua modificando matematicamente os vetores de tokens antes de chegarem às camadas de self-attention. Isso garante que o modelo calcule relacionamentos com base tanto no significado quanto na posição.

Vamos criar uma intuição sobre o que isso significa. Imagine os embeddings padrão de tokens como crachás em um evento. O crachá diz quem é a pessoa, mas onde ela está no evento não muda quem ela é nem suas relações com outras pessoas. A codificação posicional é como adicionar o número da cadeira a esse crachá. Ao combinar os dois, você sabe quem é a pessoa e onde ela está sentada. Isso adiciona contexto às interações que ela pode ter no evento.

Em um transformer, essa combinação geralmente é feita por meio de uma simples soma elemento a elemento. O modelo pega o vetor de embedding semântico de uma palavra e soma a ele um vetor de codificação posicional do mesmo tamanho. O vetor resultante contém uma modulação sutil que as camadas seguintes aprendem a interpretar como coordenadas espaciais.

Exemplo de cálculo

Vamos ver um exemplo simplificado. Imagine um pequeno espaço de embedding com dimensão 4. Queremos processar a palavra "DataCamp" localizada na posição 0 da nossa sequência.

  1. Embedding semântico: a rede neural recupera o embedding de "DataCamp", que pode ser algo como [0.51, -0.22, 0.88, 0.14].
  2. Codificação posicional: a fórmula posicional gera um vetor de coordenadas para a posição 0. Para este exemplo, vamos supor que ela calcule [0.00, 1.00, 0.00, 1.00].
  3. Combinação: somamos os dois vetores elemento a elemento.
  4. Entrada final: o forward pass recebe [0.51, 0.78, 0.88, 1.14].

Mesmo que o mesmo token "DataCamp" apareça depois na posição 5, o vetor de codificação posicional será diferente. Consequentemente, o vetor de entrada final parecerá completamente diferente para o mecanismo de self-attention.

Codificação posicional senoidal

O artigo original "Attention Is All You Need" apresentou um método brilhante para gerar vetores posicionais usando trigonometria básica. Essa abordagem não exige pesos de aprendizado e se apoia inteiramente em funções matemáticas fixas.

Base matemática

A codificação posicional senoidal usa funções seno e cosseno em diferentes frequências para codificar informação de posição. A fórmula original determina que, para uma posição (pos) e um índice de dimensão específico (i) dentro do vetor de embedding, a codificação é calculada assim:

  • Para dimensões pares (2i): PE(pos, 2i) = sin(pos / 10000^(2i/dmodel))

  • Para dimensões ímpares (2i+1): PE(pos, 2i+1) = cos(pos / 10000^(2i/dmodel))

Nessa fórmula, dmodel é o tamanho total do vetor de embedding. À medida que você percorre as dimensões do vetor do índice 0 até dmodel, o comprimento de onda das funções senoides aumenta geometricamente.

Vantagens e propriedades

Esse progresso geométrico de frequências traz algumas vantagens claras. 

  1. As saídas de seno e cosseno ficam estritamente entre -1 e 1. Essa limitação garante que as codificações posicionais não se sobreponham numericamente aos embeddings semânticos.
  2. As funções são periódicas. Por causa das fórmulas de adição trigonométrica, uma transformação linear pode representar facilmente a codificação posicional de uma posição futura (pos + k) como função da posição atual (pos). Essa propriedade permite naturalmente ao modelo aprender posições relativas.
  3. A codificação senoidal usa parâmetros fixos. Ela não requer pesos treináveis, reduzindo bastante o consumo de memória. Como opera em uma função matemática contínua, o modelo possui capacidade teórica de extrapolação, ou seja, pode mapear coordenadas posicionais para sequências mais longas do que as vistas no treinamento.

Visualização

Para entender a codificação senoidal, ajuda visualizá-la como um mapa de calor.

Matriz de codificação posicional senoidal

O eixo x da visualização representa o tamanho da dimensão do embedding, enquanto o eixo y indica a posição do token. 

As dimensões mais baixas, à esquerda, oscilam rapidamente entre valores negativos e positivos, o que permite distinguir posições de tokens próximas. À medida que o índice de dimensão aumenta, o comprimento de onda fica maior e a codificação muda de forma mais gradual. Essas dimensões capturam diferenças posicionais em distâncias maiores.

Para as 50 posições mostradas aqui, muitas dimensões mais altas aparecem como faixas verticais quase uniformes. Isso acontece porque seus comprimentos de onda são tão longos que os valores de seno permanecem próximos de 0 e os de cosseno próximos de 1 dentro dessa sequência curta, não 0 e 1 exatamente. Assim, as faixas alternadas refletem dimensões adjacentes seno–cosseno, e não uma codificação binária simples. Em uma sequência mais longa, essas dimensões também começariam a variar de forma perceptível.

A conclusão é que as diferentes frequências dão ao modelo informação posicional em múltiplas escalas: dimensões que mudam rapidamente capturam diferenças finas entre tokens próximos, enquanto dimensões que mudam lentamente acompanham a posição mais ampla em sequências longas.

Codificação posicional aprendida

Embora fórmulas matemáticas fixas sejam elegantes, arquiteturas modernas de deep learning costumam se apoiar em dados para aprender representações ideais. Embeddings posicionais aprendidos transferem toda a responsabilidade do layout para a fase de treinamento.

Conceito e implementação

Em vez de codificar rigidamente valores posicionais com seno e cosseno, embeddings posicionais aprendidos tratam as coordenadas de posição como parâmetros treináveis. 

O modelo inicializa uma matriz de embeddings totalmente em branco, em que cada linha corresponde a uma posição específica da sequência. Durante o loop padrão de treinamento com backpropagation, a rede atualiza esses pesos posicionais junto com os embeddings semânticos dos tokens para minimizar a função de perda geral.

Vantagens comparativas

A principal vantagem dos embeddings posicionais aprendidos é a extrema flexibilidade. O modelo tem liberdade total para aprender as representações posicionais que funcionam melhor para um conjunto de dados específico. Arquiteturas como BERT e GPT-2 popularizaram essa abordagem graças à alta adaptabilidade e ao forte desempenho em tarefas downstream.

Limitações e desafios

A limitação mais significativa dos embeddings posicionais aprendidos é o limite rígido no comprimento da sequência. Se um modelo é treinado com, no máximo, 2.048 vetores de posição aprendidos, ele simplesmente não consegue processar um documento com 2.049 tokens. 

Essa restrição limita severamente a extrapolação de comprimento e frequentemente exige um retrabalho caro para estender a janela de contexto.

Codificação posicional relativa

À medida que os modelos evoluíram para lidar com documentos mais longos, engenheiros perceberam que a posição absoluta de uma palavra muitas vezes importa menos do que sua distância relativa para outras palavras.

Mudança conceitual para posições relativas

Considere a expressão "the rapid advancement of AI". A relação gramatical entre "advancement" e "AI" permanece idêntica esteja a frase no início ou no fim do documento. A codificação posicional relativa abandona coordenadas absolutas e foca inteiramente nos deslocamentos de distância entre tokens que interagem.

Implementação nos mecanismos de atenção

Para implementar codificações relativas, engenheiros modificam diretamente o cálculo dos escores de atenção, em vez de alterar os embeddings de entrada logo no começo da rede. 

Ao calcular o escore de atenção entre uma matriz "query" e uma matriz "key", a operação inclui um termo de viés aprendido adicional que representa a distância relativa. Essa modificação garante invariância a deslocamento no texto. Para se aprofundar em como essas matrizes operam, leia nosso guia sobre o mecanismo de atenção em LLMs.

Trade-offs práticos

Essa abordagem gera uma compreensão contextual muito precisa, mas introduz um grande custo computacional. Calcular matrizes exclusivas de distância relativa para cada cabeça de atenção aumenta drasticamente o consumo de memória. Isso também complica os mecanismos internos de cache usados para acelerar a geração de texto.

Informação posicional absoluta vs. relativa

A escolha entre codificação absoluta e relativa depende da tarefa específica. 

  • A codificação absoluta funciona muito bem quando o layout espacial é rígido e a execução rápida é prioridade. 
  • A codificação relativa é muito superior para processamento de linguagem natural de longo formato, em que a estrutura gramatical depende do contexto local e das distâncias, não de coordenadas absolutas do documento.

Rotary Position Embedding (RoPE)

Na busca contínua por arquiteturas de transformers melhores, pesquisadores introduziram o Rotary Position Embedding (RoPE). Ele combina as melhores propriedades das codificações posicionais absoluta e relativa e rapidamente se tornou um padrão do setor.

Abordagem inovadora

O RoPE unifica posição absoluta e distâncias relativas por meio de transformações rotacionais. Em vez de somar um vetor aos embeddings ou adicionar vieses pesados aos escores de atenção, o RoPE mapeia o vetor de embedding para um plano complexo e o rotaciona por um ângulo específico. O tamanho desse ângulo é determinado estritamente pela posição absoluta do token na sequência.

Codificação posicional RoPE

Insights matemáticos

Em um espaço 2D, a rotação é aplicada usando a matriz de rotação 2D padrão. Para dimensões maiores, o RoPE simplesmente agrupa as dimensões do embedding em pares e aplica rotações 2D exclusivas a cada bloco com base no índice de posição absoluta.

Por conta das propriedades geométricas das matrizes de rotação, o produto escalar de um vetor de query rotacionado com um vetor de key rotacionado passa a depender apenas do ângulo relativo entre eles. Assim, o RoPE utiliza um mapeamento de posição absoluta para codificar naturalmente a distância relativa entre tokens.

RoPE vs. codificação senoidal

Como mostra o gráfico acima, a codificação senoidal altera a magnitude e a direção do vetor original. Já o RoPE preserva a magnitude e precisa apenas do ângulo entre duas posições diferentes para entender sua distância relativa.

Attention With Linear Biases (ALiBi)

Enquanto o RoPE depende de matemática rotacional complexa, outra técnica chamada Attention with Linear Biases (ALiBi) segue um caminho completamente diferente.

Simplicidade e eficiência

O ALiBi descarta totalmente a ideia de adicionar informação posicional aos embeddings iniciais dos tokens. Os embeddings das palavras entram no transformer totalmente intactos. 

Em vez disso, o ALiBi intervém no último passo do cálculo da atenção. Logo antes de os logits de atenção passarem pela função softmax, o ALiBi subtrai uma penalidade estática proporcional à distância entre dois tokens. Quanto mais distantes duas palavras estão, maior é a penalidade subtraída do seu escore de atenção.

Desempenho

Esse método é simples de implementar e muito eficiente. Seu maior benefício é a eficácia extrema em tarefas de extrapolação de comprimento. Um modelo treinado com ALiBi em sequências de 1.024 tokens consegue gerar texto coerente em sequências com o dobro desse tamanho sem travar. 

Para quem deseja explorar outras técnicas avançadas usadas para geração e inferência rápidas de texto, confira nosso guia sobre speculative decoding.

Quando usar cada codificação posicional

Comece pelo que você está construindo e escolha o método que mais se encaixa — às vezes é um, às vezes são vários.

  • Você quer uma base simples e sem parâmetros: senoidal (fórmulas fixas, nada para treinar).
  • Seu comprimento de sequência é fixo e você quer máximo desempenho em um dataset específico: aprendida.
  • Você precisa lidar com sequências mais longas do que as usadas no treinamento: RoPE é a melhor opção entre as técnicas que extrapolam.
  • A gramática depende da distância entre os tokens, não da posição absoluta: relativa ou RoPE.
  • Você está construindo um LLM moderno e de uso geral: RoPE.
  • Extrapolação de comprimento é sua prioridade número 1 e você quer a implementação mais simples: ALiBi.
  • Você quer os benefícios de posição relativa sem o custo de memória e cache: RoPE (codificações relativas trazem o benefício, mas custam mais).

Implementação prática e considerações de arquitetura

Sair da teoria para a prática exige entender como integrar codificações posicionais em bases de código reais e lidar com limitações arquiteturais.

Implementando codificação posicional em transformers

Para adicionar codificações posicionais a um transformer em frameworks como PyTorch, desenvolvedores normalmente criam um módulo dedicado. Esse módulo gera a matriz de codificação uma vez e a registra como um buffer para que ela não seja atualizada acidentalmente durante o backpropagation. 

Abaixo está uma implementação prática padrão de um forward pass incorporando codificações senoidais. As codificações são calculadas uma única vez a partir de seno e cosseno e nunca mudam durante o treinamento, por isso ficam armazenadas em um buffer e não como parâmetros treináveis (e portanto não aumentam o custo de treinamento).

import torch
import torch.nn as nn
import math

class PositionalEncoding(nn.Module):
    def __init__(self, d_model: int, max_len: int = 5000):
        super().__init__()
        
        pe = torch.zeros(max_len, d_model)
        position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
        
        # Calculate the division term for frequencies
        div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))
        
        # Apply sine to even indices and cosine to odd indices
        pe[:, 0::2] = torch.sin(position * div_term)
        pe[:, 1::2] = torch.cos(position * div_term)
        
        pe = pe.unsqueeze(0)
        
        # Register as a buffer
        self.register_buffer('pe', pe)

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        # Add positional encoding directly to the input embeddings
        seq_len = x.size(1)
        x = x + self.pe[:, :seq_len, :]
        return x

Em __init__, o módulo pré-computa a tabela de codificação até max_len posições: position é uma coluna de índices (0, 1, 2, …) e div_term são as frequências, resultando em 1 / 10000^(2i/d_model), então dimensões mais baixas têm ondas rápidas e dimensões mais altas, ondas lentas. 

Aplicar sin às dimensões pares (0::2) e cos às ímpares (1::2) preenche a tabela. Depois, forward faz o único trabalho em tempo de execução: fatia a tabela até o comprimento da sequência de entrada e a soma aos embeddings dos tokens, elemento a elemento. Observe que o módulo assume o formato com batch primeiro [batch, seq_len, d_model], por isso forward fatia na dimensão 1.

Viés de posição e o fenômeno "perdido no meio"

Uma consequência não intencional de mapear comprimentos de sequência longos é o viés de posição. Isso frequentemente se manifesta como o fenômeno "lost-in-the-middle". Ao processar documentos enormes, modelos de linguagem tendem a lembrar muito melhor fatos do começo e do fim do prompt do que do meio. Isso pode soar familiar, já que a memória humana funciona de forma parecida (pelo menos comigo; não me diga que sou a única pessoa que lembra melhor do começo e do fim dos livros do que do restante!).

A teoria é que isso ocorre porque o mecanismo de atenção fica sobrecarregado com contexto irrelevante e se ancora naturalmente aos tokens iniciais (que definem a instrução) e aos mais recentes (que estão mais frescos na memória). Para mitigar esse viés, desenvolvedores recorrem a estratégias de chunking avançadas e a sistemas de recuperação semântica.

Codificação posicional para domínios especializados

Transformers já não estão restritos apenas a texto. O conceito de codificação posicional se adapta rapidamente para lidar com diferentes tipos de dados em vários domínios.

Em vision transformers, as imagens são divididas em grades de patches. Uma codificação 1D simples falha em capturar a proximidade espacial em 2D. Por isso, modelos de visão frequentemente usam codificações posicionais aprendidas em 2D que consideram as coordenadas X e Y de cada patch.

Adaptações semelhantes existem para séries temporais contínuas, em que codificações especializadas acompanham distâncias temporais, sazonalidade e timestamps.

Pesquisas futuras sobre codificação posicional

Com a corrida por janelas de contexto maiores acelerando, refinar como os modelos entendem posição segue como uma área crítica e muito ativa de pesquisa em machine learning.

Extrapolação de comprimento e extensão de contexto

Os usuários de hoje exigem janelas de contexto massivas para processar um código inteiro ou séries de romances de uma só vez. Como treinar modelos do zero com sequências enormes é caro demais, pesquisadores recorrem a técnicas de extensão de contexto. 

Métodos como interpolação posicional comprimem matematicamente as coordenadas de uma sequência muito mais longa para caber nos limites do comprimento original de treinamento. Métodos adaptativos como YaRN ajustam dinamicamente a frequência rotacional dos parâmetros RoPE para ampliar, sem rupturas, a noção de distância do modelo.

Transformers sem codificação posicional explícita

Surpreendentemente, algumas pesquisas sugerem que a codificação posicional explícita nem sempre é estritamente necessária. Em modelos de linguagem causais apenas com decodificador, o mascaramento causal padrão (um mecanismo que obriga tokens a olharem apenas para trás) vaza, por si só, informações de ordenação temporal. 

Isso significa que pode ser possível aprender regras posicionais implicitamente apenas a partir da máscara causal, com ajustes estratégicos de temperatura e da arquitetura.

Desafios e próximos passos

O grande desafio está no equilíbrio entre adaptação estrita (otimizar desempenho para um comprimento específico de sequência) e extrapolação perfeita (permitir que o modelo generalize indefinidamente). 

Áreas emergentes de pesquisa estão muito focadas em codificação multimodal. Criar representações posicionais universais que combinem coordenadas de vídeo em 3D com texto e áudio é um dos objetivos para a próxima geração de modelos de inteligência artificial.

Conclusão

A codificação posicional faz a ponte entre processamento em paralelo e compreensão sequencial, permitindo criar modelos que processam grandes volumes de dados em ordem. Exploramos como embeddings aprendidos e relativos oferecem extrema flexibilidade e como inovações modernas como RoPE e ALiBi otimizam elegância matemática e eficiência computacional. 

À medida que janelas de contexto evoluem de alguns milhares de tokens para milhões, o simples ato matemático de dizer à rede neural exatamente onde cada coisa está continuará no centro do design de modelos. 

Se você quer ir além e colocar a mão na massa, recomendo se inscrever na nossa trilha de habilidades Developing Large Language Models.

FAQs sobre codificação posicional

O que é codificação posicional em machine learning?

Codificação posicional é uma técnica matemática usada para fornecer às redes neurais informações sobre a ordem dos dados em uma sequência.

Por que modelos transformer precisam de codificação posicional?

Diferente das antigas Redes Neurais Recorrentes, que processam dados passo a passo, transformers processam tudo simultaneamente usando self-attention. Como self-attention é naturalmente invariante a permutações, trata a entrada como um saco de palavras sem ordem. A codificação posicional resolve isso injetando coordenadas sequenciais diretamente nos dados antes de o modelo processá-los.

Qual é a diferença entre codificação posicional absoluta e relativa?

A codificação posicional absoluta atribui uma coordenada fixa a um token com base em seu índice exato na sequência. A codificação posicional relativa ignora a localização exata e, em vez disso, calcula a distância entre dois tokens que interagem, focando apenas no deslocamento contextual.

O que é Rotary Position Embedding (RoPE)?

RoPE é um método de codificação amplamente utilizado que mapeia embeddings de tokens para um plano complexo e os rotaciona por um ângulo determinado por sua posição absoluta. Quando o modelo calcula os escores de atenção, a relação entre dois vetores rotacionados depende inteiramente de sua distância relativa.

O que são embeddings posicionais aprendidos?

Em vez de usar fórmulas matemáticas fixas como seno e cosseno, embeddings posicionais aprendidos tratam coordenadas espaciais como pesos treináveis. O modelo inicializa uma matriz em branco de posições e atualiza essas coordenadas durante o treinamento para aprender representações espaciais ideais para um dataset específico.


Tim Lu's photo
Author
Tim Lu
LinkedIn

Sou um cientista de dados com experiência em análise espacial, machine learning e pipelines de dados. Trabalhei com GCP, Hadoop, Hive, Snowflake, Airflow e outros processos de engenharia/ciência de dados.

Tópicos

Principais cursos sobre transformers

Programa

Desenvolvimento de modelos de idiomas grandes

16 h
Aprenda a desenvolver grandes modelos de linguagem (LLMs) com PyTorch e Hugging Face, usando as mais recentes técnicas de aprendizagem profunda e PNL.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

Tutorial

Autoencodificadores variacionais: Como eles funcionam e por que são importantes

Aprenda os princípios básicos, as aplicações e os benefícios práticos dos autoencodificadores variacionais e acompanhe uma implementação passo a passo com o PyTorch.
Kurtis Pykes 's photo

Kurtis Pykes

Tutorial

Tutorial do modelo de transformador no PyTorch: Da teoria ao código

Saiba como criar um modelo Transformer usando o PyTorch, uma ferramenta poderosa do machine learning moderno.
Arjun Sarkar's photo

Arjun Sarkar

Tutorial

Como treinar um LLM com o PyTorch

Domine o processo de treinamento de grandes modelos de linguagem usando o PyTorch, desde a configuração inicial até a implementação final.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Dominando a retropropagação: Um guia abrangente para redes neurais

Mergulhe nos fundamentos da retropropagação em redes neurais com um guia prático para treinar e avaliar um modelo para um cenário de uso de classificação de imagens.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Introdução às funções de ativação em redes neurais

Aprenda a navegar pelo cenário das funções de ativação comuns - desde a firme ReLU até a proeza probabilística da softmax.
Moez Ali's photo

Moez Ali

Tutorial

DeepSeek-Coder-V2 Tutorial: Exemplos, instalação, padrões de referência

O DeepSeek-Coder-V2 é um modelo de linguagem de código de código aberto que rivaliza com o desempenho do GPT-4, Gemini 1.5 Pro, Claude 3 Opus, Llama 3 70B ou Codestral.
Dimitri Didmanidze's photo

Dimitri Didmanidze

Ver MaisVer Mais