서론

일단은 convolution의 forward는 어떻게든지 해결된 것 같다. 하지만 backward가 남았다.

이게 어렵지 않기를 빌어보자.

그 전에 forward

forward는 다 끝나지 않았나? 싶지만, 다시 생각해보니까 부족한 부분이 있었다.

2D Convolution으로는 안된다. 3D로 만들어 줘야 한다. 그래야 쓸 수 있다.

3D Convolution이면 필터는 4차원으로 들어온다. (3차원 필터 여러개)

Backward를 생각해보자

두 개의 Grad를 계산해야 한다. 두 Tensor로 하는 연산이기 때문이다.

하나는 이전 레이어의 grad, 하나는 kernel의 grad.

가장 핵심적인 연산은 @ (행렬곱)이기 때문에, 그래디언트도 행렬곱과 같은 방식으로 계산해주면 되지 않을까 싶다.

삼차원 곱인데 이게 어떻게 되련지는 잘 모르겠다

여기서 막힌다.

이게 생각보다 어렵다.

im2col로 이미지를 여러개 중복되는거로 나눠주기는 쉬워도… 그 역연산은 어떻게 되는걸까.

그 역으로 grad를 적당하게 나눠주는 방법은… 계산 그래프를 뚫어져라 쳐다보는거로 어떻게 해결될 수는 있을까

다음 시간에

내일이야말로 backward를 마무리짓자. 오늘은 Convolution의 forward를 진짜로 마무리지은거로 만족하자.