Model과 Layer 만들기 5
서론
일단은 convolution의 forward는 어떻게든지 해결된 것 같다. 하지만 backward가 남았다.
이게 어렵지 않기를 빌어보자.
그 전에 forward
forward는 다 끝나지 않았나? 싶지만, 다시 생각해보니까 부족한 부분이 있었다.
2D Convolution으로는 안된다. 3D로 만들어 줘야 한다. 그래야 쓸 수 있다.
3D Convolution이면 필터는 4차원으로 들어온다. (3차원 필터 여러개)
Backward를 생각해보자
두 개의 Grad를 계산해야 한다. 두 Tensor로 하는 연산이기 때문이다.
하나는 이전 레이어의 grad, 하나는 kernel의 grad.
가장 핵심적인 연산은 @ (행렬곱)이기 때문에, 그래디언트도 행렬곱과 같은 방식으로 계산해주면 되지 않을까 싶다.
삼차원 곱인데 이게 어떻게 되련지는 잘 모르겠다
여기서 막힌다.
이게 생각보다 어렵다.
im2col로 이미지를 여러개 중복되는거로 나눠주기는 쉬워도… 그 역연산은 어떻게 되는걸까.
그 역으로 grad를 적당하게 나눠주는 방법은… 계산 그래프를 뚫어져라 쳐다보는거로 어떻게 해결될 수는 있을까
다음 시간에
내일이야말로 backward를 마무리짓자. 오늘은 Convolution의 forward를 진짜로 마무리지은거로 만족하자.