본문 바로가기
반치용/문제해결(trouble shooting)

cnn 파라미터 수 계산 방법 및 꿀팁 (size mismatch 에러 관련)

by Cat.8 2020. 3. 29.

처음 cnn을 본인 데이터에 적용 시키거나 변경을 시키다 보면 size mismatch 에러를 만나게 될 수 있다.(파이토치)
직접 파라미터 수를 계산 할 수도 있고, 꼼수를 부릴 수도 있다.

1. 계산 방법 (아래 링크 참조) - 비추천(이게 정석이고, 정말 좋은 자료이나 이 방법을 굳이 할 필요는 없다.)

https://seongkyun.github.io/study/2019/01/25/num_of_parameters/

2. 꿀팁

 1) 그냥 아무 값이나 입력해서 에러를 띄운다.

결론 : 19200 부분이 이전 단계 out 숫자니까, 에러난 부분의 input 변수를 19200으로 맞춰주면 된다. (input 부분을 에러부분의 m1 뒷부분으로 적어주면 됨)

 2) size mismatch부분을 확인한다.

 m1 : 4 X 19200
 m2 : 1920 x 2

 라고 되어있는 부분이 중요하다.

m1 : [a x b] -> [mini batch size x in features]
m2 : [c x d] -> [in features x out features]

 m1이 앞 단계에서 넘어온 것이고, m2가 지금 에러가 난 부분이다.
 위 에러에서 mini batch size가 4개이고, 하나당 19200개의 데이터가 담겨있다는 뜻이다.
 행렬 곱에서 b=c 여야 하고, a x d 형태로 결과물이 나온다는걸 고려하면, 

 우리는 귀찮게 계산하는 것 보다는 그냥 해당 부분에 적당한 linear 등을 넣어서 에러를 내면 된다.(!)
 b 부분이 넘어온 값이니, c의 1920을 19200으로 맞춰주면 된다.

댓글