About Me/AI Tech

[Week 6- Day 3] 회고

green_ne 2022. 2. 24. 00:47

# AlexNet 학습시키기

생각보다 많이 헤맸다. 특히 자료형이나 shape을 맞춰주는 게 까다로웠어서 정리해둔다.

# GPU 사용
print(f"CUDA: {torch.cuda.is_available()}")
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# train AlexNet
alexnet = tvmodels.alexnet(pretrained=True).to(device)
loss_fn = FocalLoss()
optm = torch.optim.Adam(alexnet.parameters(), lr=0.01)

for epoch in range(20):
    avg_loss = []
    for i, (img, label) in enumerate(train_ds):
        img = Variable(img.unsqueeze(0)).to(device)
        label = torch.tensor([label]).to(device)
        
        optm.zero_grad()
        y_pred = alexnet.forward(img)
        loss = loss_fn(y_pred, label)
        avg_loss.append(loss)
        
        loss.backward()
        optm.step()
    print("epoch: {} Loss: {:.4f}".format(epoch, sum(avg_loss) / len(train_ds)))
    
plt.bar(sum_loss)

 

 

## 피어 세션

미션 : 멘토링 특강, 두런두런

 

멘토링 조언으로 내가 어떤 실험을 했는지, 난 어떤 걸 얻어가고 싶은지 (방향성)를 정리할 필요가 있다고 하셨다.

근데 피어세션 때까지 베이스라인을 다 못짜서 팀원들에게 물어보고 그랬다. 알고보니 Metric과 loss함수는 다른 것이고, 보통 eval할 때 Metric을 사용하는 것이라고 한다.

난 이번 이미지 분류 대회를 하면서 베이스라인을 짜보고, EDA 코드 익숙해지는 것을 목표로 한다. 다시 짠다고 할 때 빠르게 진행할 수 있도록. 

 

캐글 스터디를 하면서 마스터님이 호기심을 더 가졌으면 한다는 피드백을 해주셨다. 실제 현업에서는 target 변수란 존재하지 않으니 많은 변수들로 실험하는 것을 긍정적으로 본다. 생각해보니 다른 변수들과 시각화를 더 많이 한다면 다른 방법도 생각해볼 수 있겠다 했다. 내가 결측치를 시각화해보고 길을 찾아나간 것처럼. 그래서 마찬가지로 EDA 코드를 잘 정리해두어야 겠다.

결국은 본인의 생각들을 남에게 설득하는 일이라는 것을 기억해야 겠다고 느꼈다. 대본없이 즉석으로 발표하는 거라 걱정했는데, 끝나고 난 뒤에 사람의 얼굴을 인식한 것은 처음인 것같다. 항상 내가 한 말에만 우왕좌왕 이제 다른 사람 말들은 들어오지도 않았는데, '모델도 짜셨네요' 라는 한 마디에 얼굴을 확인하니 평소와 똑같아서 뭔가 안심이 된 것 같다. 이게 바로 신뢰 관계라는 걸까. 내가 무언가 자랑을 해도 우와 라고 해줄 수 있다는 믿음(?). 난 살짝 비교를 해서 문제인데 나도 노력해야지.

 

시간관리를 잘하는 게 중요하다고 한다. 왜? -> 시행 -> 피드백 하는 것을 반복해보라고 한다.

Early Stopping을 사용해야 겠다고 생각했다.

 

난 잘 때가 제일 좋다. 내가 이 일을 하게 된다면 나의 수면시간이 줄어들 것 같아서 걱정된다.

내가 지금 힘든 이유는 무언가 할 일이 많이 밀려있다는 생각이 들어서다.

그러니까 이전에 참고해야할 코드 정리도 안되어 있고, 모델 학습 하나 제대로 해둔 게 없는데 내일은 마지막 평일이다.

레포트도 써야할 텐데 실험한 게 없으면 어떻게 되는 거지. 내일까지만 버티자!

 

 

 

 

반응형