heartcored98 / Standalone-DeepLearning

2019 KAIST 딥러닝 홀로서기 세미나용 저장소입니다.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

과제 2에서 코드 관련 질문 있습니다.

soheekim911 opened this issue · comments

commented

안녕하세요 수업 잘 듣고 있습니다.
과제를 하다가 궁금한 점이 있었는데 이제야 질문드립니다..!

  1. cifar10 dataset에서 데이터를 확인하기 위한 부분에서 나온 코드입니다.
    이 떄 img = img/ 2+0.5 부분이 unnormalize하는 것이라고 설명을 써두셨는데요,
    애초에 데이터셋에서는 왜 저렇게 어둡게 normalize를 해둔 것일까요?
    def imshow(img): img = img / 2 + 0.5 # unnormalize

  2. 이 부분은 experiment define하는 셀 중 train 부분인데, 5번째 줄에서 optimizer.zero_grad()가 나와서
    epoch마다 gradient를 리셋하는 것은 알겠는데 맨 끝줄 training 중에는 왜 optimizer.zero_grad()가 나오는지 모르겠습니다.

`

    # ==== Train ===== #
    net.train()
    optimizer.zero_grad()
    
    running_loss = 0.0
    train_loss = 0.0

    for i, data in enumerate(trainloader, 0):
        # get the inputs
        inputs, labels = data
        inputs = inputs.view(-1, 3072)
        
        inputs = inputs.cuda()
        labels = labels.cuda()
        

        # zero the parameter gradients
        optimizer.zero_grad() ###

`

좋은 질문들 너무 감사드립니다!

  1. 저희가 Neural Net 모델에 데이터를 인풋으로 넣어줄 때는 일반적으로 인풋 값들이 -1~1 사이로 정규화 될 때 성능이 높다고 empirical 하게 보고되고 있어서 (어둡게?) Normalize를 하는데요. imshow 함수는 원본 이미지를 시각화하는 함수라서 다시 matplotlib가 원하는 값의 범위(0~1)를 맞춰주기 위해서 2로 나누고 0.5를 다시 더해줍니다!

  2. 맨 끝줄의 optimizer.zero_grad()는 코드를 정리하다가 미처 지우지 못한 부분이네요 👍
    수정하도록 하겠습니다!

commented

이해가 되었습니다. 답변 감사드립니다!!