오늘도 저번처럼 각자 공부를 진행하였다. 요즘 나는 aim 대회의 텍스트 분류 인공지능 만들기에 몰두하고 있는 상태이다. 모델을 어떻게 바꿀지, 파라미터들을 어떻게 튜닝해야할지 등등 다양한 고민들을 해보고 있다!

from tqdm import tqdm
import torch.optim as optim

device = 'cpu'
model.to(device)
optimizer = optim.Adam(model.parameters(), lr=1e-5)

def train_step():
    total_loss = 0
    correct = 0

    model.train()
    for batch in tqdm(train_loader):
            x, y = batch['input_ids'].to(device), batch['labels'].to(device)
            attention_mask = batch['attention_mask'].to(device)

            optimizer.zero_grad()
            output = model(x, attention_mask)
            loss = loss_fn(output, y)
            loss.backward()
            optimizer.step()

            total_loss += loss.item() * x.shape[0]
            correct += sum(output.argmax(dim=1) == y).item()
    return total_loss/len(train_loader.dataset), correct/len(train_loader.dataset)

def valid_step():
        model.eval()
        with torch.no_grad():
            total_loss = 0
            correct = 0
            for batch in valid_loader:
                x, y = batch['input_ids'].to(device), batch['labels'].to(device)
                attention_mask = batch['attention_mask'].to(device)

                output = model(x, attention_mask)
                loss = loss_fn(output, y)

                total_loss += loss.item() * x.shape[0]
                correct += sum(output.argmax(dim=1) == y).item() # classification task

        return total_loss/len(valid_loader.dataset), correct/len(valid_loader.dataset)

이 코드에서 뭘 바꿔야할지 자꾸 생각하면서 진행하고 있다. 좋은 결과가 있으면 좋겠다!