일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- iOS14
- 표준 입출력
- 입/출력
- 연결요소
- EOF
- 시간복잡도
- Django란
- 입출력 패턴
- 매크로
- k-eta
- scanf
- 구조체와 클래스의 공통점 및 차이점
- Django의 편의성
- vscode
- 이분그래프
- double ended queue
- string 함수
- c++
- string 메소드
- getline
- 알고리즘 공부방법
- 프레임워크와 라이브러리의 차이
- Django Nodejs 차이점
- 장고란
- UI한글변경
- 백준
- 엑셀
- correlation coefficient
- 자료구조
- 2557
Archives
- Today
- Total
Storage Gonie
모두를 위한 딥러닝 제9강 ML lab 04-1: multi-variable linear regression을 TensorFlow에서 구현하기 (new) 본문
데이터 사이언스/모두를 위한 딥러닝
모두를 위한 딥러닝 제9강 ML lab 04-1: multi-variable linear regression을 TensorFlow에서 구현하기 (new)
Storage Gonie 2018. 9. 8. 17:51반응형
# Multi-Variable Linear Regression 모델 생성(학습데이터 확장이 제한됨)
- 확장이 제한되는 이유는 학습데이터를 일일이 사람손으로 쳐주는 것도 그렇고, 매개변수 w의 개수가 늘어날 때 노가다 해주기가 힘들어짐
import tensorflow as tf
# 훈련데이터
# x1 x2 x3 y
# 73 80 75 152
# 93 88 93 185
# 89 91 90 180
# 96 98 100 196
# 73 66 70 142
x1_data = [73., 93., 89., 96., 73.]
x2_data = [80., 88., 91., 98., 66.]
x3_data = [75., 93., 90., 100., 70.]
y_data = [152., 185., 180., 196., 142.]
# feed_dict로 모델에 위의 데이터를 공급하기 위함
x1 = tf.placeholder(tf.float32)
x2 = tf.placeholder(tf.float32)
x3 = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)
# 랜덤한 숫자로 초기화된 매개변수들
w1 = tf.Variable(tf.random_normal([1]), name='weight1')
w2 = tf.Variable(tf.random_normal([1]), name='weight2')
w3 = tf.Variable(tf.random_normal([1]), name='weight3')
b = tf.Variable(tf.random_normal([1]), name='bias')
# hypothesis 노드 선언(xw 곱셈순서 주의)
hypothesis = x1 * w1 + x2 * w2 + x3 * w3 + b
# cost/loss function 노드 선언
cost = tf.reduce_mean(tf.square(hypothesis - Y))
# train 노드 선언
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5) #1e-5 = 1*10^-5 = 0.00001
train = optimizer.minimize(cost)
sess = tf.Session()
# 위에서 tf.placeholder 또는 tf.Variable을 사용했으므로 이것 먼저 실행
sess.run(tf.global_variables_initializer())
# W 갱신(훈련) 100번 반복
for step in range(2001):
cost_val, hy_val, _ = sess.run([cost, hypothesis, train], feed_dict={x1: x1_data, x2: x2_data, x3: x3_data, Y: y_data})
if step % 10 == 0:
print(step, "Cost: ", cost_val, "\nPrediction:\n", hy_val)
'''
0 Cost: 122671.4
Prediction:
[-151.81143 -194.13591 -185.2805 -200.98085 -151.74805]
10 Cost: 36.978657
Prediction:
[157.95276 178.22021 181.5862 198.52972 132.27493]
...
...
1990 Cost: 13.130109
Prediction:
[155.44531 181.72447 181.65694 198.8812 136.34274]
2000 Cost: 13.066046
Prediction:
[155.43224 181.7335 181.653 198.87782 136.35503]
'''
# Multi-Variable Linear Regression 모델 생성(학습데이터 확장이 가능함)
-연산과정 모두를 행렬 방식으로 표현해 준것이 아래와 같음
import tensorflow as tf
# 훈련데이터
# x1 x2 x3 y
# 73 80 75 152
# 93 88 93 185
# 89 91 90 180
# 96 98 100 196
# 73 66 70 142
x_data = [[73., 80., 75.], [93., 88., 93.], [89., 91., 90.], [96., 98., 100.], [73., 66., 70.]]
y_data = [[152.], [185.], [180.], [196.], [142.]]
# feed_dict로 모델에 위의 데이터를 공급하기 위함
X = tf.placeholder(tf.float32, shape=[None, 3]) # row는 무제한 가능하고 column은 3개인 행렬이 들어올 수 있다는 것
Y = tf.placeholder(tf.float32, shape=[None, 1]) # row는 무제한 가능하고 column은 1개인 행렬이 들어올 수 있다는 것
# 랜덤한 숫자로 초기화된 매개변수들
W = tf.Variable(tf.random_normal([3, 1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
# hypothesis 노드 선언
hypothesis = tf.matmul(X, W) + b
# cost/loss function 노드 선언
cost = tf.reduce_mean(tf.square(hypothesis - Y))
# train 노드 선언
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5) #1e-5 = 1*10^-5 = 0.00001
train = optimizer.minimize(cost)
sess = tf.Session()
# 위에서 tf.placeholder 또는 tf.Variable을 사용했으므로 이것 먼저 실행
sess.run(tf.global_variables_initializer())
# W 갱신(훈련) 100번 반복
for step in range(2001):
cost_val, hy_val, _ = sess.run([cost, hypothesis, train], feed_dict={X: x_data, Y: y_data})
if step % 10 == 0:
print(step, "Cost: ", cost_val, "\nPrediction:\n", hy_val)
'''
0 Cost: 93325.734
Prediction:
[[-110.1494 ]
[-147.48538]
[-137.31595]
[-151.42026]
[-114.84549]]
10 Cost: 43.046097
Prediction:
[[160.00769]
[177.27098]
[182.64726]
[197.01448]
[132.87134]]
...
...
1990 Cost: 14.551982
Prediction:
[[156.96066]
[180.90736]
[182.4332 ]
[197.21602]
[137.10072]]
2000 Cost: 14.47433
Prediction:
[[156.94592]
[180.91748]
[182.4287 ]
[197.21277]
[137.11398]]
'''
반응형
'데이터 사이언스 > 모두를 위한 딥러닝' 카테고리의 다른 글
Comments