2020. 4. 21. 23:10ㆍAI/모두를 위한 딥러닝
이 포스트는 모두를 위한 딥러닝 - Tensor Flow를 정리한 내용을 담았습니다.
누구나 이해할 수 있는 수준으로 설명하고자 하였으며 LAB의 코드는 TF2.0에 맞추어 재작성되었습니다.
이번 포스트는 텐서플로우에서 Softmax Classification의 Hypothesis와 Cross-entropy, 그리고 Gradient descent를 구현해보고, Epoch에 따른 cost의 변화를 살펴보겠습니다. 전체적으로는 저번 포스트의 Logistic Regression의 코드와 유사하지만, 이번 포스트에서 주목할 점은 tf.argmax()를 통해 One-hot encoding을 구현하는 코드입니다.
사실 코드 1.1은 Logistic Regression LAB을 조금만 수정한 코드입니다. Logistic regression과 다른 점으로 y_train을 세 클래스(nb_classes = 3)의 One-hot encoding 된 값을 사용하고 있는 모습을 볼 수 있습니다. 이후 행렬 사이즈를 nb_classes에 맞춰 랜덤 값으로 W와 b를 정의하고, 이 값을 토대로 softmax_func()에서 hypothesis를 구합니다. line 43(grad()) - 59는 Logistic regression때와 동일하게 Gradient descent를 통해 반복에 따른 cost값의 변화를 살펴보는 코드입니다. 사실 처음에 말했듯 포스트에서 cost의 변화를 살펴보기 위한 코드는 Logistic regression때와 큰 차이가 없으나, y_train을 One-hot encoding 된 값으로 정의했다는 것에 주목해야 합니다. 따라서 아래에서는 One-hot encoding에 대해 자세히 알아보기 위해 테스트 데이터와 softmax function(x_train) 데이터를 직접 One-hot encoding 하는 코드입니다.
코드 2.1은 One-hot encoding의 과정을 보여주고 있습니다. One-hot encoding은 가장 큰 값을 1(TRUE), 나머지 값을 모두 0(FALSE)으로 하는 인코딩을 말합니다. 텐서플로우에서 tf.argmax()를 사용하여 쉽게 표현할 수 있는데, 위 코드의 line 61 - 68에서는 test_data에 대한 tf.argmax()를 구해(첫 번째 인자에 입력값(1x4 행렬), 두 번째 인자에 차원(2차원 배열에 대해서는 axis = 1)을 넣습니다) 가장 큰 값의 인덱스를 출력합니다. 같은 방법으로 line 70 - 79에서는 softmax_func(x_data)에 대한 One-hot encoding값과 y_data(이미 One-hot encoding 된 값입니다)를 비교하여 출력하고 있습니다. 물론 W와 b가 랜덤한 값을 갖는 배열이기 때문에 실행에 따라 tf.argmax(pass_sotfmax_x, 1) 값은 항상 바뀝니다. 아래는 실행결과를 보여줍니다.
이번 포스트에서는 텐서플로우에서 softmax classification을 직접 구현해보았습니다. 사실 TF2.0에서는 Keras를 사용하여 더욱 간편하고 쉽게 구현할 수 있지만, 강의의 코드에 맞춰 작성하다 보면 TF2.0 코드의 장점을 살리지 못하는 것이 아쉽습니다. 따라서 다음 포스트에서는 TF2.0에 맞춰 작성하고 싶은 분들을 위한 공지와, 바로 이은 다음 포스트에서 softmax classification를 또 다른 텐서플로우 코드로 실습해보겠습니다.
'AI > 모두를 위한 딥러닝' 카테고리의 다른 글
06-3. Fancy Softmax Classification LAB(2) (0) | 2020.04.25 |
---|---|
[공지] LAB 포스트 관련 공지사항 (0) | 2020.04.22 |
06-1. Softmax classification (0) | 2020.04.19 |
06. Softmax classification - Multinomial classification (0) | 2020.04.18 |
05-2. Logistic Regression(3) - Logistic Regression LAB (0) | 2020.04.17 |