티스토리 뷰

Scalar Math

 - 2 + 3 = 5 또는 2 * 3 = 6과 같이 대부분의 스칼라값 계산은 덧셈과 곱셈이다.

 - 신경망 네트워크에선 이러한 스칼라값의 계산도 수천 수백개씩 해야할 경우가 다수이다.

 - 또 [2^2 4^2 6^2 ...] 와 같은 행렬에서도 여기에 다시 제곱을 해야 할 수도 아니면

 - 동일한 값으로 모두 나눠야 하는 경우도 있다.

 - 또한 프로그램을 설계함에 있어 모든 값에 대해 어느 시점에서 반복문을 돌려야 할 지도 고려해야한다.

 - 그런데 이러한 연산에 대한 복잡도를 고려할 때 행렬이 한가지 대안이 될 수 있다.



Element-wise Operation

 - 이러한 수많은 스칼라 값들이 행렬에 저장되어 있으면 Element-wise Operation이 가능한데,

 - 행렬의 개별 원소(요소)들을 각각 처리 및 계산할 수 있고 또 같은(동일한) 연산을 모두 적용시킬 수 있다.

 - 예시로 행렬이라는 단어(용어)를 사용하였을 뿐 실제로는 어떠한 차원에서건

 - 이 Element-wise Operation은 모두 적용되는 개념이다.

- 2 + 3 = 5와 같이 스칼라값 두개를 더하는것은 쉽다.

 - 그 아래 보이는 것 처럼 스칼라를 행렬에 더하는것도 동일하다.



 - 이번엔 픽셀에 대해 얘기해보도록 하자.

- 한 이미지에 RGB 픽셀값 중 R타입의 픽셀값을 행렬로 가지고 있다면, 0~255 범위 중 한가지 값을 가질것이다.

 - 이러한 픽셀값을 0에서 1사이의 값인 floating point value로 정규화(Normalization) 시켜보도록 하자.



 - 간단하다. 행렬 전체를 255로 나눠주면 된다. (divide the matrix element-wise by 255)

 - 이러한 정규화의 개념은 스칼라 값(위의 예시에선 255)에만 해당되는것이 아니라

 - 행렬로 나누는것도 가능하다. 즉, 행렬 두개를 가지고도 정규화가 가능하다.

 - 행렬을 이용해 정규화를 시키기 위해선, 두 행렬의 shape가 동일해야한다.



- 행렬의 shape가 같을 경우, 상응하는 index의 값에대한 연산이 가능하다.






Element-wise operations

 · The Python way

 - 파이썬으로 숫자 리스트에 대한 모든 요소에 5를 더하는 방법으로는 반복문을 돌리는것이다.

 - 예시로 들은 것은 요소들의 개수가 몇개 안되지만, 집합이 커지는경우 순수 파이썬은 연산이 매우 느려지게 된다.



 · The Numpy way

 - 넘파이로는 이와같이 코드를 줄이고 직관적으로 연산이 가능하다.

 - 일반적으로 데이터를 ndarray에 저장하게 될 텐데, 그렇게 되면 더 간단해진다.

 - values 라는 이름의 ndarray에 모든 요소들에 5를 더하는 연산은 이거면 된다.



 - 넘파이는 이러한 연산에 대해 직관적으로 연산을 줄여줄 수 있지만, 표준 수학 연산도 지원한다.

- 즉 위의 두 계산식은 동일한 것이다.



 - 앞으로 함수를 사용한 연산 보다는 연산자를 통한 연산을 자주 사용하게 될텐데 

 - 그 이유는 코드를 더 직관적으로 이해할 수 있기 때문이다.



 - m 이라는 행렬을 가지고 있는데, 이것을 재사용하려면 먼저 모든 값들을 0으로 만들어야한다(초기화).

 - 이럴경우 간단하게 위와같이 처리 할 수 있다.






Element-wise Matrix operations

 - 스칼라와 행렬에 대해 같은 역할을 하는 함수나 연산자의 경우 이에만 국한되는 것이 아니다.
 - 즉, 다른 차원에서도 동일하게 사용 가능하다.
 - 단지 유의해야할 점은 동일한(호환되는, compatible) shape를 가지고 있어야 한다는 점

 - 또다른 예로 행렬의 제곱값을 얻고싶은경우 단순하게 x = m * m 과 같이 처리가 가능하다.
 - 행렬 m에 대해 그대로 제곱값을 넘겨주고 싶다면 m *= m 과 같이 연산해주면 됨

# 행렬 연산에 대한 예시



# shape이 다른 행렬에 대한 연산을 시도하면 에러가 난다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함