모두를 위한 딥러닝 시즌2 - TensorFlow

Lab-06-2 Softmax Classifier Animal Classification

sososoy 2021. 10. 27. 19:54

동물 데이터를 분류하면서 이전 방식들과 달리 softmax에 다양한 추가 기능 활용하여 구현해보자.

 

<Softmax_cross_entropy_with logits>

hypothesis가 아닌 logits 값을 input으로 받음!

 

Sample Dataset

동물의 특징을 추출하여 분류 (ex. 다리의 개수)

데이터는 ','로 나눔. 데이터 슬라이싱함.

 

tf.one_hot 기능을 통해 y 데이터에 one_hot을 적용한다. 이때 바로 적용을 하면 에러가 나는데, 이유는 ohe_hot은 랭크가 N이면 output은 N+1이 돼야 한다. 따라서 바로 적용을 하면 one hot shape이 2차원에서 한 차원이 추가되어 3차원인 (?, 1, 7)이 되는데, 이는 원하는 shape이 아니다.

이를 해결하기 위해 tf.reshape 함수를 통해 shape을 하나 줄인다.

최종 shape은 (?, 7)이 된다.

 

loadtxt를 통해 파일을 불러오고, x_data와 y_data를 정의를 하고, classes 수를 정의하고, one hot을 적용 후 reshape을 한다.

 

W, b값은 기존과 동일하게 구현한다.

기존과 달리 logit 기능을 추가하였으므로 logit 함수와 hypothesis 함수를 구분해서 정의를 한다. 이때 hypothesis 함수는 정확도를 위해 구현된다.

grad는 기존과 동일하게 구현한다.

 

기존과 달리 prediction 함수 구현을 통해 단순히 loss값 계산뿐만 아니라 얼마나 정확하게 정답을 맞히고 있나를 알 수 있다. 이때 logit보다는 hypothesis 함수를 통해 가장 높은 값을 도출해내어 accuracy를 계산할 수 있다.

 

Training은 기존과 비슷하지만, prediction 함수를 통해 정확도까지 계산해낸다는 점이 차이점이다.

지속적으로 학습을 통해 10%도 안 되는 낮은 정확도에서 100%의 정확도 값까지 도출할 수 있다.

 

 

 

 

출처: https://youtu.be/rzxT1a0IYz8