인공지능

[모두의 딥러닝] lab 08. Tensor Manipulation

여니두 2019. 5. 6.

Simple ID array and slicing

- 1차원 array

- rank: 몇 차원의 array인지

- shape: array의 모양이 어떠한가 (개수)

- "-1"은 특별한 의미를 지님 = python에서는 마지막을 뜻함.

 

2D Array

- 2차원도 1차원과 같이 접근

 

Shape, Rank, Axis(축)

 - rank: 1, shape: (4)

- rank: 2, shape: (2 , 2)

- rank: 대괄호가 (element가 나오기 전까지) 몇 개 있느냐로 파악 가능

- shape: 괄호를 타고 끝까지 들어가서 몇 개 있는지 보기(오른) + 안의 괄호가 몇 쌍 있는지 = x, y(왼)

 

- rank: 4, shape: (1, 2, 3, 4)

 

- Axis

: 축은 0부터 시작함

: 가장 안 쪽에 있는 것이 가장 큰 값 = -1 이라고도 함

: 바깥 단으로 갈수록 축 값이 작아짐

 

Matmul VS multiply

- 곱하기를 하기 위해서는 shape이 맞아야 한다.

- 곱한 결과 shape (2, 1)

 

- 헷갈려서 matrix 곱하기가 아닌 일반 곱하기를 하는 경우

: 결과가 다르게 나오니 의도한 것이 아닌 이상 주의하기!!!!!

 

Broadcasting (주의!)

- shape이 다르더라도 연산을 할 수 있게 해주는 것

- shape이 같은 경우

 

- shape이 다른 경우

- tense의 격을 맞추어 주는 것이 broadcasting

 

- rank가 다른 경우

- 아예 서로 형태가 다른 tense인 경우

 

- 굉장히 강력한 기술이지만 잘 모른다면 이상한 값이 나올 수 있음.

- 앞 뒤의 shape을 잘 고려하고 사용하기! (이왕이면 같은 shape)

 

Axis

Reduce mean

- 평균을 줄여서 구한다는 뜻

- 행렬에서 값이 여러 개일 때 줄이는 것

- integer의 평균을 구할 때: 자료형 주의

- 평균을 계산할 때에는 element가 반드시 float 값이어야 함

- 축: rank=2니 0, 1축이 있을 것.

- 축에 따라 reduce_mean()한 값이 달라진다.

- 축 없이 쓴 경우는 모든 element의 평균을 구하라는 것.

 

Reduce sum (또한 마찬가지)

 

마지막 줄이 자주 쓰임: 안쪽의 축의 합으로 평균을 내는 것!

 

Argmax

- 가장 큰 것의 위치를 구하는 argmax

 

Reshape (가장 많이 사용)

- rank=2, 안의 값은 3개, 나머지는 알아서(-1)

- reshape을 할 때 마구 섞여버리지는 않을까?

--> 보통 우리가 가장 안 쪽에 있는 값은 건드리지 않음.(3) (그대로 가져감)

--> 마구 섞이지는 않는다!

 

Reshape - squeeze, expand

- squeeze: 괄호를 squeeze(펴주는) 것

- expand_dims: dimension을 추가하는 것.

 

ONE-HOT

- 주어진 숫자를 one-hot으로 바꾸는 것

- one_hot() 함수

- depth: 대괄호 안의 값이 몇 개인지 주는 것

- one hot은 rank를 자동적으로 하나 expand하게 된다.

--> rank를 expand하기 싫은 경우, one hot을 한 다음 다시 reshape을 해주면 된다.

 

Casting

- True, False --> 1, 0으로 바꿀 때

: accuracy 값 계산 시 true가 나온 결과의 개수를 알고 싶을 때 많이 사용 (바꿔서 합하기)

 

Stack

- 축을 바꿈으로써 쌓는 것의 방법을 바꿀 수 있음.

 

Ones and Zeros like

- 0 또는 1이 들어있는 tense를 만들고 싶을 때

 

Zip

- 복수 개의 tense가 있을 때 한꺼번에 실행시키고 싶을 때 사용

 

댓글