더북(TheBook)

2.3 신경망의 톱니바퀴: 텐서 연산

컴퓨터 프로그램을 이진수의 입력을 처리하는 몇 개의 이항 연산(AND, OR, NOR 등)으로 표현할 수 있는 것처럼, 심층 신경망이 학습한 모든 변환을 수치 데이터 텐서에 적용하는 몇 종류의 텐서 연산(tensor operation)(또는 텐서 함수(tensor function))으로 나타낼 수 있습니다. 예를 들어 텐서 덧셈이나 텐서 곱셈 등입니다.

첫 번째 예제에서는 Dense 층을 쌓아서 모델을 만들었습니다. 케라스의 층은 다음과 같이 생성합니다.

keras.layers.Dense(512, activation="relu")

이 층은 행렬을 입력으로 받고 입력 텐서의 새로운 표현인 또 다른 행렬을 반환하는 함수처럼 해석할 수 있습니다. 구체적으로 보면 이 함수는 다음과 같습니다. (W는 행렬이고, b는 벡터입니다. 둘 모두 층의 속성입니다.17)

output = relu(dot(W, input) + b)

좀 더 자세히 알아보겠습니다. 여기에는 3개의 텐서 연산이 있습니다.

입력 텐서와 텐서 W 사이의 점곱(dot)

점곱으로 만들어진 행렬과 벡터 b 사이의 덧셈(+)

relu(렐루) 연산. relu(x)max(x, 0)입니다.18

Note ≣

이 절은 선형대수학(linear algebra)을 다루지만 어떤 수학 기호도 사용하지 않습니다. 수학에 익숙하지 않은 프로그래머는 수학 방정식보다 짧은 파이썬 코드를 보는 것이 수학 개념을 이해하는 데 훨씬 도움이 됩니다. 앞으로도 계속 넘파이와 텐서플로 코드를 사용하여 설명합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.