Diagrama detalhado da arquitetura do VisionTransformer (ViT)

Este é o diagrama da arquitetura original, com muitas coisas faltando.

Esta é uma versão detalhada que resumi com base no código-fonte

Insira a descrição da imagem aqui

Existem alguns pontos que precisam ser explicados. Se você consegue entender olhando o diagrama da arquitetura, não precisa ler os comentários.

(1) A imagem de entrada deve ter 224x224x3, caso contrário, dimensione-a para este tamanho.

(2) O que o Transformer deseja é uma sequência de vetores incorporados, que provavelmente é uma SeqLen, HidSizematriz bidimensional de formas. Então a imagem é H, W, Cuma matriz tridimensional. Se você quiser inseri-la, deverá passar por uma etapa de conversão. Isto é o que o módulo de incorporação faz.

Simplificando, ele é cortado em 16*16*3pedaços (Patch) de tamanho e, em seguida, cada pedaço é convertido em um 768vetor unidimensional de comprimento por meio de mapeamento linear de uma etapa. Conv2dEsta etapa é concluída em uma passagem no código .

Nossa camada convolucional contém 768 16*16*3núcleos de convolução de tamanho e o passo é igual ao tamanho do kernel de convolução. Em outras palavras, equivale a cortar a imagem 16*16*3em segmentos, depois multiplicar cada segmento e cada núcleo de convolução e somar para obter um valor. Cada fragmento gera um total de 768 valores, que são organizados sequencialmente para obter um vetor unidimensional, que é seu vetor de incorporação. Em seguida, os vetores de incorporação de todos os fragmentos são organizados sequencialmente para obter a sequência de incorporação de toda a imagem, e pronto .

(3) Um vetor de incorporação especial será adicionado no início da sequência. No entanto <CLS>, esse vetor de incorporação não tem outro significado. Ele representa apenas a incorporação da posição de saída e deve ser calculado como a incorporação de categoria de toda a imagem.

(4) A incorporação de posição será adicionada posteriormente, não a codificação, pois pode ser aprendida, ou seja, o gradiente não está bloqueado. Muitos Transformers são incorporações posicionais porque são bloqueados por gradiente.

(5) Haverá uma camada Dropout após a incorporação da posição, que não é encontrada na imagem original do artigo.Parece que muitas variantes Bert ou GPT terão essa coisa.

(6) Após 12 blocos TF, este bloco é igual ao Bert, sem qualquer modificação mágica.

(7) Haverá um LayerNorm após o bloco TF, que não é encontrado na imagem original, e também aparece em muitas variações.

(8) Como queremos classificar, ou usar uma tarefa de classificação no artigo, precisamos obter a incorporação da categoria, que é o SeqLenprimeiro elemento da dimensão.

(9) Em seguida, é passado um linear + Tanh. O artigo afirma que isso só é necessário durante o período de pré-treinamento e pode ser descartado diretamente durante a migração.

(10) é seguido por linear + Softmax, que é usado para converter a incorporação da categoria na probabilidade de a imagem pertencer a cada categoria.

Acho que você gosta

Origin blog.csdn.net/wizardforcel/article/details/133438092
Recomendado
Clasificación