MLOps 프로젝트/도서 '케라스 창시자에게 배우는 딥러닝'

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

youjin86 2021. 8. 23. 19:45

1부 딥러닝의 기초

2장 딥러닝이란 무엇인가?


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

심층 신경망이 학습한 모든 변환을 수치 데이터 텐서에 적용하는 몇 종류의 텐서 연산으로 나타낼 수 있음. (텐서 덧셈, 텐서 곱셈..)

 

원소별 연산

relu함수와 덧셈

텐서에 있는 각 원소에 독립적으로 적용

고도의 병렬 구현이 가능한 연산

 

relu(x) = max(x,0)

입력이 0보다 크면 입력을 그대로 반환

입력이 0보다 작으면 0을 반환

 

브로드캐스팅

크기가 다른 두 텐서가 연산될 때 모호하지 않고 실행이 가능하면 작은 텐서가 큰 텐서에 크기를 맞춤.

 

[브로드캐스팅 과정]

1. 큰 텐서의 ndim에 맞도록 작은 텐서에 축이 추가

2. 작은 텐서가 새 축을 따라서 큰 텐서의 크기에 맞도록 반복

 

[예]

x -> (32,10) / y -> (10,)

 

1. y의 비어 있는 첫 번째 축을 추가하여 크기를 (1,10)으로 만듦.

2. y를 이 축에 32번 반복하여 텐서 y의 크기를 (32,10)으로 만듦.

 

텐서 점곱 (텐서 곱셈)

원소별 연산과 반대로 입력 텐서의 원소들을 결합시킴. (우리가 알고 있는 행렬의 곱과 같음.)

넘파이, 케라스, 씨아노, 텐서플로에서 원소별 곱셈은 * 연산자 사용

넘파이, 케라스에서 점곱 연산은 dot연산자 사용

 

텐서 크기 변환

특정 크기에 맞게 열과 행을 재배열

크기가 변환인 텐서는 원래 텐서와 원소 개수가 동일

 

신경망 전체적으로 텐서 연산의 연결로 구성
모든 텐서 연산 입력 데이터의 기하학적 변환