In [9]:
import tensorflow as tf

#x_train = [1,2,3]
#y_train = [1,2,3]

#위의 x와 y를 placeholder로 줄 수 있다. 
"""
select *. from A where name=?
"""

x_train = tf.placeholder(tf.float32, shape=[None])
y_train = tf.placeholder(tf.float32, shape=[None])

 # H(x) = wx + b

In [3]:
#여기서 Variable는 텐서플로가 사용하는 것이다.  즉 텐서플로를 실행시키면 텐서플로가 자동으로 변경시키는 값이다. 
#텐서플로가 학습을 하면서 자동을 변경을 시키는 값을 나타낸다. 
# w와 b는 최초에 랜덤 값을 부여받아 시작한다. 
# 그리고 shape를 결정해준다. [1]은 1차원 array를 뜻한다. 랭크가 1이다. 
W = tf.Variable(tf.random_normal([1]), name = 'weight')
b = tf.Variable(tf.random_normal([1]), name = 'bias')

In [4]:
hypothesis = x_train * W + b

#reduce_mean은 어떤 텐서 예를 들면 t = [1,2,3,4,5] 가  주어졌을때 평균을 내주는 것이다. 
cost = tf.reduce_mean(tf.square(hypothesis - y_train))

In [5]:
#cost 펑션까지 주어졌는데 이젠 이걸 최소화하는 것이 필요하다.
#텐서플로에서는 크래디언트디센트를 사용할 수 있다. 

optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)

#텐서플로에서 train이라는 크래프의 노드를 만들었다. 
train = optimizer.minimize(cost)

In [6]:
#위에까지는 텐서플로의 그래프를 구현해 준것이다.
#이걸 실행 할려면 세션(아마 서버같은 개념일 듯)을 개설 해주고 그 세션에서 돌려야 한다. 
#그래프는 세션 안에서 실행이 된다. 
sess = tf.Session()

#global_variables를 사용했는데 W,b  반드시 초기화를 해줘야 한다. 
sess.run(tf.global_variables_initializer())

In [7]:
#아래에서 sess.run의 결과값들을 리턴 받아 변수들에게 입력하는데 왜 저렇게 해야 에러가 안나는지 모르겠음

for step in range(2001):
    cost_val, w_val, b_val, _ = sess.run([cost,W,b,train], feed_dict={x_train: [1, 2, 3, 4, 5], y_train: [2.1, 3.1, 4.1, 5.1, 6.1]})
    if step % 20 == 0:
        print(step, cost_val, w_val, b_val)
    #    print(step, sess.run(cost), sess.run(W), sess.run(b))


0 95.1074 [-1.11447883] [ 0.62562025]
20 0.00365023 [ 0.96382284] [ 1.19398749]
40 0.00149335 [ 0.97495389] [ 1.19025898]
60 0.00130412 [ 0.97663373] [ 1.18435884]
80 0.0011389 [ 0.97816408] [ 1.17883444]
100 0.000994618 [ 0.97959411] [ 1.17367148]
120 0.000868608 [ 0.98093051] [ 1.16884685]
140 0.000758567 [ 0.98217934] [ 1.16433811]
160 0.000662458 [ 0.9833464] [ 1.16012466]
180 0.000578533 [ 0.98443705] [ 1.15618718]
200 0.000505238 [ 0.98545629] [ 1.15250742]
220 0.000441234 [ 0.98640871] [ 1.14906883]
240 0.000385332 [ 0.98729879] [ 1.14585531]
260 0.000336511 [ 0.98813057] [ 1.14285231]
280 0.000293885 [ 0.98890787] [ 1.14004588]
300 0.000256647 [ 0.98963428] [ 1.13742328]
320 0.000224132 [ 0.99031317] [ 1.13497233]
340 0.000195736 [ 0.99094766] [ 1.13268185]
360 0.000170938 [ 0.99154049] [ 1.13054156]
380 0.00014928 [ 0.99209452] [ 1.12854135]
400 0.000130366 [ 0.9926123] [ 1.12667191]
420 0.000113852 [ 0.99309611] [ 1.12492526]
440 9.94261e-05 [ 0.99354821] [ 1.12329292]
460 8.68285e-05 [ 0.99397069] [ 1.1217674]
480 7.58279e-05 [ 0.99436563] [ 1.12034166]
500 6.62212e-05 [ 0.9947347] [ 1.11900949]
520 5.78323e-05 [ 0.99507952] [ 1.11776447]
540 5.0504e-05 [ 0.99540174] [ 1.11660111]
560 4.41048e-05 [ 0.99570286] [ 1.1155138]
580 3.8517e-05 [ 0.99598438] [ 1.11449754]
600 3.36373e-05 [ 0.99624735] [ 1.11354804]
620 2.93754e-05 [ 0.99649316] [ 1.11266077]
640 2.56544e-05 [ 0.99672282] [ 1.11183167]
660 2.2403e-05 [ 0.99693739] [ 1.1110568]
680 1.95665e-05 [ 0.99713796] [ 1.11033297]
700 1.70873e-05 [ 0.9973253] [ 1.10965633]
720 1.49232e-05 [ 0.99750048] [ 1.10902393]
740 1.30321e-05 [ 0.99766415] [ 1.10843301]
760 1.13814e-05 [ 0.99781716] [ 1.10788071]
780 9.93952e-06 [ 0.99796009] [ 1.10736454]
800 8.67986e-06 [ 0.99809372] [ 1.1068821]
820 7.57985e-06 [ 0.9982186] [ 1.10643125]
840 6.61954e-06 [ 0.9983353] [ 1.10600996]
860 5.78084e-06 [ 0.99844432] [ 1.10561645]
880 5.04821e-06 [ 0.99854618] [ 1.10524869]
900 4.40905e-06 [ 0.99864137] [ 1.10490501]
920 3.85053e-06 [ 0.9987303] [ 1.10458386]
940 3.36267e-06 [ 0.99881351] [ 1.10428357]
960 2.93648e-06 [ 0.99889117] [ 1.10400307]
980 2.56456e-06 [ 0.99896377] [ 1.10374093]
1000 2.24007e-06 [ 0.99903166] [ 1.10349596]
1020 1.95603e-06 [ 0.99909514] [ 1.10326684]
1040 1.70837e-06 [ 0.99915439] [ 1.10305297]
1060 1.49167e-06 [ 0.99920976] [ 1.10285306]
1080 1.30282e-06 [ 0.99926144] [ 1.10266626]
1100 1.13779e-06 [ 0.99930984] [ 1.10249162]
1120 9.93699e-07 [ 0.99935502] [ 1.10232854]
1140 8.67922e-07 [ 0.99939722] [ 1.10217607]
1160 7.57877e-07 [ 0.99943668] [ 1.10203362]
1180 6.6205e-07 [ 0.99947357] [ 1.10190046]
1200 5.78065e-07 [ 0.99950802] [ 1.10177588]
1220 5.04925e-07 [ 0.99954027] [ 1.10165966]
1240 4.40908e-07 [ 0.99957037] [ 1.10155094]
1260 3.84869e-07 [ 0.9995985] [ 1.10144937]
1280 3.36259e-07 [ 0.99962485] [ 1.10135436]
1300 2.93625e-07 [ 0.99964935] [ 1.10126579]
1320 2.5654e-07 [ 0.99967235] [ 1.10118282]
1340 2.23876e-07 [ 0.99969381] [ 1.10110533]
1360 1.95658e-07 [ 0.99971384] [ 1.10103309]
1380 1.7082e-07 [ 0.99973249] [ 1.1009655]
1400 1.49313e-07 [ 0.99974996] [ 1.10090232]
1420 1.30327e-07 [ 0.99976635] [ 1.10084331]
1440 1.13833e-07 [ 0.99978173] [ 1.100788]
1460 9.94648e-08 [ 0.99979597] [ 1.10073662]
1480 8.68877e-08 [ 0.99980927] [ 1.10068822]
1500 7.59333e-08 [ 0.99982172] [ 1.1006434]
1520 6.62848e-08 [ 0.99983346] [ 1.10060132]
1540 5.78753e-08 [ 0.99984431] [ 1.10056198]
1560 5.05644e-08 [ 0.99985451] [ 1.10052514]
1580 4.4196e-08 [ 0.99986404] [ 1.10049093]
1600 3.86197e-08 [ 0.99987292] [ 1.10045874]
1620 3.37146e-08 [ 0.99988127] [ 1.10042882]
1640 2.94599e-08 [ 0.99988902] [ 1.10040069]
1660 2.57206e-08 [ 0.99989617] [ 1.10037446]
1680 2.24992e-08 [ 0.99990296] [ 1.10035026]
1700 1.9625e-08 [ 0.99990928] [ 1.10032725]
1720 1.71308e-08 [ 0.9999153] [ 1.1003058]
1740 1.4984e-08 [ 0.99992079] [ 1.10028589]
1760 1.3059e-08 [ 0.99992597] [ 1.10026681]
1780 1.14536e-08 [ 0.9999308] [ 1.10025001]
1800 9.97738e-09 [ 0.99993539] [ 1.10023332]
1820 8.72697e-09 [ 0.9999395] [ 1.1002183]
1840 7.64763e-09 [ 0.99994344] [ 1.10020399]
1860 6.66837e-09 [ 0.99994719] [ 1.10019064]
1880 5.86301e-09 [ 0.99995053] [ 1.10017872]
1900 5.10749e-09 [ 0.99995381] [ 1.1001668]
1920 4.42742e-09 [ 0.99995691] [ 1.10015559]
1940 3.90646e-09 [ 0.99995947] [ 1.10014606]
1960 3.42566e-09 [ 0.99996209] [ 1.10013652]
1980 2.97223e-09 [ 0.99996471] [ 1.10012698]
2000 2.61576e-09 [ 0.99996704] [ 1.10011935]

In [8]:
print(sess.run(hypothesis, feed_dict={x_train: [5]}))


[ 6.09995461]

In [ ]: