Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lab-08_4_mnist_back_prop ... 질문 #40

Open
HERIUN opened this issue Oct 8, 2020 · 1 comment
Open

lab-08_4_mnist_back_prop ... 질문 #40

HERIUN opened this issue Oct 8, 2020 · 1 comment

Comments

@HERIUN
Copy link

HERIUN commented Oct 8, 2020

    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 HERIUN changed the title lab-08_4_mnist_back_prop ... lab-08_4_mnist_back_prop ... 질문 Oct 8, 2020
@Taeyoung96
Copy link

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

  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구문으로 끝났다는 것을 확인해보심이 어떨까요?

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants