본문 바로가기

분류 전체보기107

[Decoder Data Step] 이번 포스팅부터는 위 참조 그림의 우측에 해당하는 영역에 대해 알아본다. 우선 실습을 위해 Shakespear의 작품이 담긴 dataset을 가져온다. !wget "https://raw.githubusercontent.com/Joocheol/Transformer/b96eaede3556f79a0948ef8dc666848380dc9e6e/input.txt" 우리는 이 text를 input 으로 하여 새로운 text를 만들어내는 것을 목표로 한다. 필요한 기능들을 import하고 변수를 세팅한다. import torch import torch.nn as nn from torch.nn import functional as F batch_size = 32 block_size = 8 max_iters = 3000 .. 2023. 12. 17.
[Attention Mask] tril을 통해 lower traingular matrix를 만들 수 있다. attention_mask = torch.ones(2,2).tril(diagonal=0) attention "mask"라는 이름처럼, attention mask는 1인 부분의 data만 남기고 0인 부분의 data를 지우는 데 사용한다. 혹은, masked_fill을 사용해 traingular matrix의 특정 부분을 원하는 값으로 바꿀 수 있다. 아래의 코드는 0인 부분을 -infinity로 바꾸는 코드이다. attention_mask = attention_mask.masked_fill(attention_mask==0, -float('inf')) attention_mask attention mask에 softmax를 취해서 .. 2023. 12. 17.
[Scaled dot product] Transformer란? Transformer는 2017년 논문, [Attention is all you need]( Ashish Vaswani 외)를 기반으로 만들어졌다. 위 이미지는 해당 논문 3페이지에서 발췌한 것이다. 위 이미지를 간략히 정리해 보면 아래와 같다. - softmax(output을 확률 형태로 바꿔주는 역할) - Feed Forward Network(f(wx+b) 연산 수행: linear 연산한 것에 activation function을 더한 것) - Add: 자기 output을 다음 layer로 넘기고, 다음 layer의 output에 다시 한 번 더해 주는 것. - Norm: Batch Normalization Layer - Multi-Head Attention: Transfor.. 2023. 12. 17.
[Encoder Only Model with imdb] 이전 포스팅까지 keras layer를 통해 encoder를 만드는 것을 배웠으나 실제로 의미있는 데이터를 다루지는 않았다. 이번 포스팅에서는 실제 의미있는 데이터를 다루는 것을 실습한다. 기존과 같이 세팅을 하고, load_dataset을 이요해 imdb를 불러온다. dataset = load_dataset("imdb") 미리 training 된 Tokenizer를 가져오고, 1024를 기준으로 padding을 맞춰 준 뒤, encoding해 준다. tokenizer = Tokenizer.from_pretrained("bert-base-uncased") tokenizer.enable_padding() tokenizer.enable_truncation(1024) temp = tokenizer.encode.. 2023. 12. 17.