코드 10-28 텐서로 변환
def indexesFromSentence(lang, sentence): ------ 문장을 단어로 분리하고 인덱스를 반환
return [lang.word2index[word] for word in sentence.split(' ')]
def tensorFromSentence(lang, sentence): ------ 딕셔너리에서 단어에 대한 인덱스를 가져오고 문장 끝에 토큰을 추가
indexes = indexesFromSentence(lang, sentence)
indexes.append(EOS_token)
return torch.tensor(indexes, dtype=torch.long, device=device).view(-1, 1)
def tensorsFromPair(input_lang, output_lang, pair): ------ 입력과 출력 문장을 텐서로 변환하여 반환
input_tensor = tensorFromSentence(input_lang, pair[0])
target_tensor = tensorFromSentence(output_lang, pair[1])
return(input_tensor, target_tensor)
파이토치에서 seq2seq 모델을 사용하기 위해서는 먼저 인코더와 디코더를 정의해야 합니다. 입력(영어) 문장이 인코더로 주입되면 디코더(프랑스어)로 번역되어 출력됩니다. 인코더와 디코더를 이용하면 문장의 번역뿐만 아니라 다음 입력을 예측하는 것도 가능합니다. 이때 각 입력 문장의 끝에는 문장의 끝을 알리는 토큰이 할당됩니다.
▲ 그림 10-15 인코더와 디코더