Open HERIUN opened 4 years ago
안녕하세요 저도 공부를 하고 있는 입장이라, 정확하지는 않지만 제 의견을 말씀드리면
diff가 되어야 하는 것 같습니다. 오차를 이용하여 Backpropagation을 진행하는데, d_l2가 어떤 것으로 미분된 값인지는 잘 모르지만, d(diff)/d(y_pred) => 1이 될 경우 제대로 W,b가 업데이트 되지 않는 것을 확인하였습니다
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이라 값이 같게 나오는 것 같습니다.
저는 마지막 셀이 끝나는 것을 확인했습니다. if i == 10000: 뒤에 print구문으로 끝났다는 것을 확인해보심이 어떨까요?
부족한 답변이지만 도움이 되셨으면 합니다. 감사합니다.
위 부분에서 diff를 그대로 쓰면 안될거 같습니다. diff가 loss를 의미하는데, 저 자리에는 diff가 아니라 d(diff)/d(y_pred) => 1이 되야할거 같습니다. 제가 잘못 이해했다면 알려주시면 감사하겠습니다.
업데이트 부분에서 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.그리고 마지막 셀에서 끝나지 않는데,, 저만 그런가요