PyTorch icon indicating copy to clipboard operation
PyTorch copied to clipboard

lab-08_4_mnist_back_prop ... 질문

Open HERIUN opened this issue 3 years ago • 1 comments

    diff = y_pred - Y

    # Back prop (chain rule)
    d_l2 = diff * sigmoid_prime(l2)
  1. 위 부분에서 diff를 그대로 쓰면 안될거 같습니다. diff가 loss를 의미하는데, 저 자리에는 diff가 아니라 d(diff)/d(y_pred) => 1이 되야할거 같습니다. 제가 잘못 이해했다면 알려주시면 감사하겠습니다.

  2. 업데이트 부분에서 w1 = w1 - learning_rate * d_w1 b1 = b1 - learning_rate * torch.mean(d_b1, 0) 왜 bias에만 mean을 적용하는지 가르쳐주세요 그리고 torch.mean(d_b1, 0) 대신 d_b1했을때도 결과가 같은데요.

3.그리고 마지막 셀에서 끝나지 않는데,, 저만 그런가요

HERIUN avatar Oct 08 '20 19:10 HERIUN

안녕하세요 저도 공부를 하고 있는 입장이라, 정확하지는 않지만 제 의견을 말씀드리면

  1. diff가 되어야 하는 것 같습니다. 오차를 이용하여 Backpropagation을 진행하는데, d_l2가 어떤 것으로 미분된 값인지는 잘 모르지만, d(diff)/d(y_pred) => 1이 될 경우 제대로 W,b가 업데이트 되지 않는 것을 확인하였습니다

  2. w1와 d_w1의 모양이 같고, b1과 d_b1의 모양이 같아야 합니다.
    w1과 d_w1이 Tensor의 Shape이 (30,10)이고 b1의 Tensor의 Shape은 (30)입니다.
    bias에 mean을 적용하여 d_b1과 b1의 Tensor의 Shape을 맞추기 위해 하는 것 같습니다. torch.mean(d_b1, 0) 에서 0은 0번째 차원을 기준으로 평균을 구한다는 뜻인데, default가 0이라 값이 같게 나오는 것 같습니다.

  3. 저는 마지막 셀이 끝나는 것을 확인했습니다. if i == 10000: 뒤에 print구문으로 끝났다는 것을 확인해보심이 어떨까요?

부족한 답변이지만 도움이 되셨으면 합니다. 감사합니다.

Taeyoung96 avatar Oct 11 '20 17:10 Taeyoung96