서론

이걸 적당한 타이밍에 끝낼 수 있을거라는 희망이 슬슬 사라져간다.

올라오는 내용중에도 푸념의 비중이 높아지는 것 같다.

언제나 그렇듯 프로그램은 돌아가지 않고, 그 중 어디가 문제인지를 확인하는 작업이다……

인덱스

이걸 건드려줘야만 할 것 같다.

솔직히 어떻게 건드려야 할지 감은 안오지만, 일단 인덱싱을 어떻게든 건드려야 한다.

Forward는 어렵지 않고… Backward는 영향을 받는 부분만 grad를 전달하게 해야 할 것 같다.

근데 어떻게 인덱싱을 바로 subclass를 만드는 법은 모르겠고, Convolution처럼 별개의 함수를 만드는게 좋을 것 같다.

아니면 조금 더 그럴싸하게 np.take 함수를 구현하는 것도 좋을 것 같다.

그리고… 으음, 원본과는 다르게 스칼라 값만 받을 수 있게 하자. 귀찮아서 그렇다.

계속되는 에러

일단 그 부분은 어떻게 넘긴 모양이고 이제 드디어 Backward 연산까지 도달한 모양이다.

그 말은 또 다른 에러가 이 앞에 기다린다는 뜻이다.

평균 내는 부분을 다시 한번 살펴볼 필요가 있어 보인다. (정확히 말하자면 평균 구현)

그 부분의 구현이 잘못되어 있었다.

돌아간다

드디어 일단 돌아는 간다. 이것저것 많이 건드리고 해서 드디어 돌아는 간다.

제대로 학습되는 것 같아 보이지는 않지만 여기저기 오버플로우도 나고 그래도 돌아는 간다.

문제는… 느리다. 너무. 지나치게. 한 스텝당 9초가 넘어 걸린다.

일단 제대로 만들지는 않았어도 (혹은 그런 것 같아 보이기는 해도) 삐걱거리면서 돌아가는거에 만족하자.

다음 시간

일단 Convolution은 없던 일로 치고 다른걸 구현해보자.

각종 Loss들을 구현하는 시간을 가지자. Model은 여기까지!