시작하기무료로 시작하기

텍스트용 RNN 모델 구축

PyBooks의 데이터 분석가로서 고객 상호작용, 시계열 데이터, 텍스트 문서처럼 순차적 정보가 담긴 데이터셋을 자주 다루게 됩니다. RNN은 이러한 데이터를 효과적으로 분석하고 인사이트를 추출하는 데 유용합니다. 이 연습 문제에서는 이미 전처리와 인코딩이 완료된 Newsgroup 데이터셋을 사용합니다. 이 데이터셋은 여러 범주의 글로 구성되어 있습니다. 여러분의 과제는 RNN을 적용해 다음 세 가지 범주로 기사를 분류하는 것입니다:

rec.autos, sci.med, 그리고 comp.graphics.

다음 모듈이 미리 로드되어 있습니다: torch, nn, optim.

또한 매개변수 input_size, hidden_size (32), num_layers (2), 그리고 num_classes가 사전에 로드되어 있습니다.

이 연습 문제 및 이후 연습 문제에서는 sklearnfetch_20newsgroups 데이터셋을 사용합니다.

이 연습은 강의의 일부입니다

PyTorch로 배우는 텍스트 딥러닝

강의 보기

연습 안내

  • RNN 계층과 완전 연결 Linear 계층을 포함해 RNN 클래스를 완성하세요.
  • 모델을 초기화하세요.
  • 경사도를 초기화(zeroing)하면서 RNN 모델을 10 epoch 동안 학습하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Complete the RNN class
class RNNModel(nn.Module):
    def __init__(self, input_size, hidden_size, num_layers, num_classes):
        super(RNNModel, self).__init__()
        self.hidden_size = hidden_size
        self.num_layers = num_layers
        self.rnn = ____.____(input_size, hidden_size, num_layers, batch_first=True)
        self.fc = ____.____(hidden_size, num_classes)        
    def forward(self, x):
        h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
        out, _ = self.rnn(x, h0)
        out = out[:, -1, :] 
        out = self.fc(out)
        return out

# Initialize the model
rnn_model = ____(input_size, hidden_size, num_layers, num_classes)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(rnn_model.parameters(), lr=0.01)

# Train the model for ten epochs and zero the gradients
for epoch in ____: 
    optimizer.____()
    outputs = ____(X_train_seq)
    loss = criterion(outputs, y_train_seq)
    loss.backward()
    optimizer.step()
    print(f'Epoch: {epoch+1}, Loss: {loss.item()}')
코드 편집 및 실행