2020. 4. 4. 17:15ㆍAI/모두를 위한 딥러닝
이 포스트는 모두를 위한 딥러닝 - Tensor Flow를 정리한 내용을 담았습니다.
누구나 이해할 수 있는 수준으로 설명하고자 하였으며 LAB의 코드는 TF2.0에 맞추어 재작성되었습니다.
이번 포스트에서는 Gradient descent를 텐서플로우 코드로 어떻게 구현하는지를 알아보겠습니다. 구현에 앞서 Gradient descent 식을 보며 순서를 정하겠습니다.
1. 먼저 α값을 정합니다. α는 learning rate(학습 속도)로 보통 0.001, 0.00001 등의 작은 값을 사용하지만, 이번에는 값의 변화를 조금 더 빨리 보기 위해 0.01로 정하겠습니다.
2. W에 대해 cost(W)를 편미분한 식을 구현하겠습니다. 텐서플로우의 평균을 구해주는 reduce_mean() 메서드와 곱 연산을 해주는 tf.multiply() 메서드를 활용하여 쉽게 구할 수 있습니다. reduce_mean() 메서드에 대한 자세한 설명은 02-2. Simple Linear Regression LAB에서 확인할 수 있습니다.
3. 이제 1,2에서 구한 값을 곱하여 W에서 뺀 값을 다시 W에 할당하겠습니다. 텐서플로우의 assign() 메서드를 이용하여 값을 할당해주는 작업을 합니다.
이렇게 우리는 텐서플로우 코드로 Gradient descent를 구현하는 방법을 알아보았습니다. 이제 실제로 W, X, Y에 값을 주고 실행해서 W와 cost의 변화를 살펴보겠습니다. 먼저 코드를 보겠습니다.
step이 지남에 따라 cost와 W는 각각 0, 1로 수렴한 것을 보실 수 있습니다. (강의에서는 W에 정규분포를 따르는 임의의 값을 넣었습니다. 실제로 임의의 값이든 정해진 값이든 결국에는 step이 지나면 같은 값으로 수렴합니다. 다만 tensorflow v2로 넘어오며 tf.set_random_seed()와 tf.random_normal()의 사용법이 조금 바뀌었으므로 사용하는 텐서플로우 버전에 따라 강의에 나오는 코드를 그대로 작성하시면 AttributeError가 발생할 수 있습니다.)
이번 포스트에서는 Gradient descent를 텐서플로우 코드로 구현해보았습니다. 다음 포스트에서는 Multi-variable Linear Regreesion (다변수 선형 회귀)에 대해 알아보도록 하겠습니다.
'AI > 모두를 위한 딥러닝' 카테고리의 다른 글
04-1. Multi-variable Linear Regression LAB (2) | 2020.04.07 |
---|---|
04. Multi-variable Linear Regression (0) | 2020.04.05 |
03. How to minimize cost - Gradient descent (0) | 2020.04.03 |
02-2. Simple Linear Regression LAB (3) | 2020.03.31 |
02-1. 텐서플로우(TensorFlow)란? / 텐서플로우 설치 (1) | 2020.03.26 |