[모두의 딥러닝] Fancy Softmax Classifier - cross_entropy / one_hot / reshape
📗강의노트/모두의 딥러닝

[모두의 딥러닝] Fancy Softmax Classifier - cross_entropy / one_hot / reshape

728x90
반응형

Sung Kim 님의 "모두의 딥러닝" 강의노트입니다

좋은 강의 감사드립니다!

https://www.youtube.com/watch?v=mQGwjrStQgg&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=5


Cross_entropy
One_hot 
Reshape


Soft_cross_entropy_with_logits

-> logits = tf.matmul(X,W) + b           logit( Score값 )
    Hypothesis = tf.nn.softmax(logits)     최종 확률의 형태로 나오게 됨


Y 는 one-hot 으로 주어짐 / 이를 hypo의 log와 곱하면 됨 

더 간편하게 하기 위해 Soft_cross_entropy_with_logits함수를 사용함 logit에는 softmax하지 않은 처음 logit을 집어넣고 labels에는 y-one-hot을 넣는다.
그 후 평균을 내어 cost로 사용함! 


동물의 종을 예측하는 Classification !

Y가 1개이고 총 n개의 행이어서 [None,1]로 shape정함
근데 Y의 값이 0~6까지 이기에 one-hot으로 바꾸는 과정이 필요함
Y값의 범위를 말해줘야함 0~6 그리고 몇 개의 클래스를 가지는지 ( = 7) 말해야함


하지만 그냥 tf.one_hot을 실행하게 되면  기존 rank N인 인풋을 넣으면 N+1의 output을 내놓게 된다.     [[0],[3]]   => [[[1000000]],[[0001000]]] 처럼 2차원 랭크로 나오게 됨 
                        Rank =2      -> rank = 3

복잡해지기 때문에 reshape을 사용함!

원하는 shape이 (N,7) 이다
Reshape이 된다면 [[1000000],[0001000]]으로 기존 rank를 유지할 수 있다.
[-1, nb_classes] 로 원하는 shape의 모양으로 바꿔준다. 

flatten이라는 것은 [[ 1],[0 ]] -> [1,0]으로 바꿔주는 것 
zip은 각각의 element들을 묶어 주는 것 


728x90
반응형