Gidhub BE Developer

Tensor Manipulation (new)

2018-02-19
goodGid


Tensor Manipulation (new)

결과값이 달라진다 !

반드시 Matrix 곱인지 일반적인 곱인지 제대로 알고 사용해야한다.


일반적 곱이 일어난 이유는

Broadcasting개념 때문이다.


굉장히 유용하지만 독이 될 수도 있다.


각각 다른 Rank에 대해 계산을 할 때

임의로 맞춰주는게 Broadcasting이다.


위 사진처럼 Shape이 바뀐 상태로 계산을 한다.


Q. matrix2가 어떤 구조로 바껴서 계산이 되는거지 ?


Reduce Mean

Reduce mean은 말그대로 평균을 구하는데 줄여서 구한다 !


1번째 Example을 보면

Integer이기 때문에 평균은 1이 나온다.


같은 reduce_mean을 사용하더라도 axis에 따라 값이 달라진다 !


Reduce Sum

  • 첫 번째 사진은 축값에 따라 어떻게 보는가를 보여준다.

  • 두 번째 사진은 축을 기준으로 연산을 하였을 때 결과 값이 어떻게 달라지는가를 확인할 수 있다.


Argmax

  • Argmax는 주어진 List에서 가장 큰 값의 Index를 Return한다.

Reshape

  • ReshapeTenseShpae을 변경하기 위해 사용한다.
  • 가장 중요하다 !
tr.reshape(t, shape=[-1, 3]).eval()

에서 '-1'은 알아서 값을 잡으라는 뜻이다.

그리고 Rank는 []안에 값이 -1, 3이기 때문에 2로 지정해주는 것이다.
  • squeeze는 펴준다는 느낌으로 사용한다.

  • 특정 Array의 Dimention을 추가하고 싶을 때 expand_dims를 사용한다.


One hot

  • 배열의 Index를 가리키는 [0, 1, 2, 3]와 같은게 아니라

  • 해당되는 값만 Point를 주기위해 사용한다.


  • one_hot을 하게 되면 rank = rank + 1이 된다.

  • 그래서 reshape을 해주면 된다.


Casting


Stack


One and Zeros like

  • 0 또는 1로만 채워진 tense를 만들고 싶을 때 사용한다.

Zip

  • 복수개의 tense를 가지고 있을 때 사용한다.

Comments

Content