*일반적인 직선을 나타내는 공식(선형을 나타내는 가설 Hypothesis) :
y = wx + b
H(x) = wx + b
위 공식에서 W와 B가 미지수이다.
결국 W와 b를 찾는것이 목적!!
w= weight 기울기
b= bias
(x, y) , (x1, y1), (x2, y2) 의 값이 있을 때
(x, H(x)), (x1, H(x1)), (x2, H(x2))
Cost = 1/N <<(H(x) - y)2
Cost는 w의 제곱식
Cost는 작으면 작을 수록 좋다!(Loss가 적다는 의미)
*Linear Regression을 하기 위한 기본 적인 3가지 요소
- Hypothesis
- Cost 정의(에측값에서 제곱을 해서 평균을 구한 값)
- Cost를 최소화 하기 위한 알고리즘(Gradient Decent...)
* 최적의 Hypothesis의 선택 :
=> H(x) - y를 최소화하는 직선을 찾으면 됨!
- Cost = Hypothesis에서 예측값 목표를 뺀값의 제곱의 평균
(tf.reduce_mean(tf.square(hypothesis - y_data)))
*Linear Regression Example (with Pycharm) :
1) Pycharm 가상환경에서 tensorflow 설치 :
(Terminal에서 'pip install tensorflow' 입력)
2) Pycharm에서 Python 파일 생성하기 :
실행하기 (shift + F10) or 마우스 우클릭 후 Run linear_Regression
3) tensorflow로 학습시키기 :
소스코드 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import tensorflow as tf x_data = [1., 2., 3.] y_data = [1., 2., 3.] w = tf.Variable(tf.random_uniform([1], -1., 1.)) #초기 값을 랜덤하게 준다 -1에서 1 사이에서 1개 b = tf.Variable(tf.random_uniform([1], -1., 1.)) #초기 값을 랜덤하게 준다 -1에서 1 사이에서 1개 hypothesis = w * x_data + b cost = tf.reduce_mean(tf.square(hypothesis - y_data)) # Cost를 구한다 optimizer = tf.train.GradientDescentOptimizer(0.1) train = optimizer.minimize(cost) #가장 작은 cost륵 가져온다 init = tf.global_variables_initializer() sess = tf.Session() sess.run(init) for step in range(2001): sess.run(train) if step % 20 == 0: print(step, sess.run(cost), sess.run(w), sess.run(b)) | cs |
'Python 활용 딥러닝' 카테고리의 다른 글
multi-variable linear regression(with matrix multiplication) + tensorflow file load (0) | 2018.12.18 |
---|---|
Linear Regression 응용 (Placeholder) (0) | 2018.12.18 |
모두를 위한 머신러닝 + 기계학습 절차 Machine Learning Concept (0) | 2018.12.18 |
Tensorflow Basic(Ranks, Shapes, Types) + Pycharm 설치 (0) | 2018.12.17 |
Scipy 사용법 (0) | 2018.12.17 |