
from Scratch
261
얕은 지식은 위험하다. 시의 샘물을 깊이 마셔라.
그러지 않을 것이라면 차라리 맛보지 마라.
- 알렉산더 포프(
Alexander
Pope
)
원래 딥러닝(
deep
learning
)은 (한 개 이상의 은닉층을 지닌) ‘깊은’ 신경망을 의
미한다. 요즘에는 (
18
장에서 다룬 ‘간단한’ 신경망을 포함한) 다양한 신경망 구
조를 모두 아우르는 용어가 되었다.
18
장의 내용을 기반으로 다양한 종류의 신경망 구조를 살펴볼 것이며, 신경망
을 더 개념적으로 이해할 수 있을 것이다.
19.1
텐서
이미
1
차원 배열인 벡터와
2
차원 배열인 행렬의 차이를 살펴보았다. 복잡한 신
경망 구조를 다루다 보면 더 고차원의 배열이 필요해진다.
대부분의 신경망 라이브러리의 명칭을 따라서
n
차원의 배열을 텐서(
tensor
)라
고 하겠다. (정말 수학적으로 따지면
n
차원의 배열을 텐서로 부르면 안되는 것
을 충분히 인지하고 있으니, 이해를 부탁한다.)
만약 딥러닝에 대한 책을 새로 집필한다면, 파이썬의 기본적인 연산자를 오버
로딩(
overloading
)하여 다양한 계산이 가능한
Tensor
클래스를 직접 구현했을
것이다. 이런 클래스를 직접 만드는 것 자체가 책의 한 단원 정도의 분량이 될
테니 이 책에서는 간단하게 텐서를 리스트로 구현할 것이다. 참고로 벡터, 행렬, ...