모두를 위한 딥러닝

[DL] 모두를 위한 딥러닝 8

승무_ 2022. 4. 2. 23:35

뇌를 연구해보니 놀라운 사실이 2가지 밝혀졌다.

1. 뇌가 복잡하게 연결되어 있다.

2. but 자세히 보니 뉴런이라는 단위는 단순하게 동작한다.

2-1. 여러개의 input(X)이 XW+b되고 어떤 정도를 넘으면 활성화

1. 고양이에게 그림을 보여주고 시신경이 어떻게 동작하는지 실험

2. 그림의 형태에 따라 일부만 활성화 됨

3. 우리의 신경망 세포가 동시에 전체를 보는줄 알았는데 부분 부분이 나중에 조합되는 걸 발견

'['의 개수 가 rank

 

1,2,3,4 ->4

x,y,z ->3

X,Y ->2

전체 ->1

 

따라서 shape은 (1,2,3,4)

 

Axis

*)rank가 4니까 axis 0~3까지 4개

>>> t1 = [[1, 2, 3], [4, 5, 6]]      # dim = 2
>>> t2 = [[7, 8, 9], [10, 11, 12]]   # dim = 2 
>>> tf.concat([t1, t2],0)            # axis = 0
<tf.Tensor: shape=(4, 3), dtype=int32, numpy=
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])>               # dim = 2

t1 과 t2는 모두 2차원 ( 2 X 3 )행렬이라고 생각하자.

axis 는 붙이는 축이라고 생각하면 쉽다.

 

axis = 0 이라는건 가장 높은 차원을 기준으로 합치는 것이다. 

 

모두 2차원의 행렬이니 1차원은 그대로 두고 2차원의 위치를 붙여준다.

결과는 (4 X 3) 행렬이 나온다.


3차원 tensor 자료는 어떻게 합쳐질까?

>>> t1 = [[[1, 2, 3], [4, 5, 6]]]
>>> t2 = [[[7, 8, 9], [10, 11, 12]]]
>>> tf.concat([t1, t2],0)
<tf.Tensor: shape=(2, 2, 3), dtype=int32, numpy=
array([[[ 1,  2,  3],
        [ 4,  5,  6]],

       [[ 7,  8,  9],
        [10, 11, 12]]])>

t1 과 t2는 모두 3차원 ( 1 X 2 X 3 ) tensor라고 생각하자.

위의 2차원 모양과 달라진 것이 있다면 차원이 추가 된 것 뿐이다.

 

이번에는 차원이 3차원이다. 

두 tesnor를 axis = 0에 tf.concat 하면 1,2 차원의 모양은 그대로 두고,

자연스럽게 ( 2 X 2 X 3 )의 모양이 된다.

 

axis=1 이면 1 X 4 X 3

 

 

one_hot시 자동으로 expand되는 데 싫으면 reshape

똑같은 모양으로 전부 0,1 인거 만들어줌

한방에 처리