일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- python list
- #opencv
- #English
- findContours
- opencv SURF
- convexhull
- #실생활영어
- tensorflow update
- TensorFlow
- object detection
- Convolution Neural Network
- 영어명언
- #실생활 영어
- #영어
- #1일1영어
- c언어
- keras
- #영어 명언
- word embedding
- python 알고리즘
- #프로젝트
- text2img
- python __init__
- 이미지 생성
- #Android
- 영어
- 딥러닝
- 완전탐색
- #일상영어
- tokenizing
Archives
- Today
- Total
When will you grow up?
Tensorflow로 Linear Regression 구현하기 본문
김성훈 교수님께 감사의 말씀드림니다.
모두를 위한 머신러닝/딥러닝 강의 를 토대로 만들어 졌습니다.
문제가 되거나, 저작권 위반이 된다면
댓글이나 메일로 문의 주시면 삭제 하겠습니다.
Linear Regression?
->회귀분석이라고 말을 하는데 데이터를 선형적으로 예측하기 위한 모델 이라고 생각하면 편하다.
Hypothesis(가설)
->Linear Regression 모델의 가설을 세운다
H(x) = Wx + b
(W는 Weight 기울기, b는 bias 절편)
Cost function
가설로 세운 데이터H(x)값과 실제 데이터 y값의 차이를 구해서 더하는 것
값을 가장 작게 하는 W값과 b의 값을 구하는 것이 Linear regression 학습의 목표이다.
구현코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #tensorflow를 임폴트하고 그 이름을 tf로 별명을 붙여준다 tf를 사용하는것은 다 tensorflow 사용이라고 생각하심 된다. import tensorflow as tf #1행 3열 데이타 2차원으로 표현하면 (1,1) (2,2) (3,3) 이 되고, 우리의 가설의 직선 그래프를 그릴수 있다 x_data = [1, 2, 3] y_data = [1, 2, 3] #cost 함수에서 궁극적으로 찾고자 하는 기울기(W) 와 y절편(b)의 초기값을 설정한다 #tf.random_uniform 함수는 정규분포 난수를 생성하는 함수 (배열shape,최소,최대) 파라미터로 구성 -1.0~ 1.0 #[2:2]라고 초깃값을 주어지면 #[1,1] #[1,1] 이런형식으로 생긴다 W = tf.Variable(tf.random_uniform([1], -1.0, 1.0, dtype = tf.float32))#1개의 난수를 만드는데 범위는 -1.0~1.0이다 행렬 형식으로 잡아준다 b = tf.Variable(tf.random_uniform([1], -1.0, 1.0, dtype = tf.float32)) X = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32) #가설 H(x) = Wx + b #placeholder사용시 차후 나중에 값을 넣어서 확인해 볼 필요가 있어서 사용되는데, #그래서 가설을 W * X +b로 바뀌였다 여기서는 X 가 x_data라고 생각하자. #[-0.36494708 -0.79782605 -0.42870998] 이런값으로 표현이 되는데, #W는 1*1 ,x_data는 1*3 이므로 결과는 1*3행 결과가 나온다 +b는 모든 행렬요소에 대해 다 더해진다. hypothesis = W * X + b #cost function #간단하게 공식은 hypothesis 나온값에 실제데이터(y_data) 를 빼면 거리가 나오게 된다 #이 값들을 tf.square() 제곱을 하고, #tf.reduce_mean 합계에 대해 평균을 내부적으로 계산하는 함수 #placeholder사용으로 인하여 hypothesis - y_data 인데 y_data를 나중에 넣어주기 위해 Y를 삽입 cost = tf.reduce_mean(tf.square(hypothesis - Y)) #또는 #cost = tf.reduce_mean(tf.pow(tf.sub(hypothesis , Y),2)) #cost값 최소화 하기 rate = tf.Variable(0.1) optimizer = tf.train.GradientDescentOptimizer(rate) train = optimizer.minimize(cost) #초기화를 시켜주는 구문 ->텐서플로우 구동하기 전에 그래프에 연결된 모든 변수를 초기화 해야한다. init = tf.initialize_all_variables() #세션 실행 sess = tf.Session() sess.run(init) print('W값은:',sess.run(W),'b값은:',sess.run(b)) # 파이썬 3.x버전부터는 xrange 가 range로 통합되므로써 range를 사용 # 0부터 2000까지 2001번 반복되는 반복문 # 너무 많은 출력을 피하기 위해서 step별로 계속 진행되다가 20번에 한번씩 출력 for step in range(2001): sess.run(train,feed_dict={X:x_data,Y:y_data}) if step % 20 == 0: print('진행단계:',step,'cost값은',sess.run(cost,feed_dict={X:x_data,Y:y_data}),'W값은:',sess.run(W),'b값은:',sess.run(b)) #우리가 cost값이 최소화 되서 W 가중치 값와 bias값 b가 제대로 나와서 가설이 잘 예측되서 작동되는지 확인하는 방법 print('x값이 5일때 y값 예측',sess.run(hypothesis,feed_dict={X:5})) print('x값이 6일때 y값 예측',sess.run(hypothesis,feed_dict={X:6})) print('x값이 7,7일때 y값 예측',sess.run(hypothesis,feed_dict={X:[7,7]})) | cs |
결과
'02. Study > Tensorflow' 카테고리의 다른 글
Anaconda를 이용한 tensorflow update 하기 (0) | 2017.05.11 |
---|---|
Tensorflow로 Logistic(Binary) Classification 구현하기 (0) | 2017.01.24 |
[Spyder] Edit창 Vertical 선 없애기 && Syntax color 적용 (0) | 2017.01.18 |
Anaconda를 이용한 윈도우환경에 tensorflow 설치하기 (0) | 2017.01.11 |
모두를 위한 딥러닝 강좌 추천 (0) | 2016.12.21 |
Comments