AI 하드웨어·소프트웨어 스택
합성곱 신경망에서 합성곱 계산을 im2col 등의 방법으로 행렬 곱으로 변환하여 계산하는 경우가 있는 이유로 올바른 것은 무엇인가?
- A변환하면 연산 횟수가 10분의 1이 되기 때문
- B고도로 최적화된 행렬 곱 라이브러리나 텐서 코어 같은 행렬 연산기를 사용할 수 있기 때문
- C변환하면 메모리 사용량이 반드시 줄기 때문
정답과 해설 보기
정답: B. 고도로 최적화된 행렬 곱 라이브러리나 텐서 코어 같은 행렬 연산기를 사용할 수 있기 때문
im2col은 합성곱의 각 윈도에 들어가는 입력 값을 한 열로 늘어놓은 큰 행렬을 만들고, 필터를 늘어놓은 행렬과의 곱으로 합성곱을 계산하는 방법입니다. 윈도가 겹치는 만큼 입력이 중복되어 메모리는 늘어나지만, 수십 년간 최적화되어 온 행렬 곱 라이브러리나 텐서 코어 같은 행렬 연산기를 그대로 사용할 수 있으므로 전체적으로 빨라지는 경우가 많습니다. 중복을 만들지 않고 같은 일을 하는 구현도 있습니다.
- A. 연산 횟수는 변하지 않습니다.
- B. 정답입니다. 다만 입력을 재배열하는 만큼 메모리는 늘어납니다.
- C. im2col에서는 입력을 중복하여 늘어놓으므로 메모리는 오히려 늘어납니다.