>>> import tensorflow.compat.v1 as tf
>>> tf.disable_v2_behavior()

>>> import numpy as np

>>> array1 = np.array([[30, 0, 4, 5, 7, 8, 7.5, 8, 8, 8.5, 4, 3, 1]
... ,[30, 0, 4, 5, 7, 8, 8, 8.5, 4, 3, 1,0,0]
... ,[30, 0.5, 3, 4.85, 6.5, 8, 8.23, 8.5, 5, 4.5, 3.2, 1, 0]
... ,[30, 0.5, 3, 6, 8.23, 7.5, 5, 4.5, 3.2, 1, 0, 0, 0]
... ,[30, 0.5, 3, 3.85, 5.57, 7.52, 8.23, 8.5, 5, 4.5, 3.2, 1, 0]
... ,[30, 0.5, 3, 5, 8, 5, 3.2, 1,1.521,1.22,0,0,0]
... ,[40, 0, 3, 6, 7, 9, 9, 9.5, 7, 4, 2,1,0]
... ,[40, 1.5, 2, 3.85, 5.5, 8, 9.23, 9.5, 8, 6.5, 5.2, 3, 2]
... ,[40, 1.25, 4, 6, 8.23, 8.5, 7, 5.5, 4.2, 1, 2, 1, 0]
... ,[50, 1.2345, 4, 4.85, 6.57, 8.52, 9.23, 9.5, 6, 5.5, 4.2, 2, 1]
... ,[50, 1, 4.52, 7, 9, 8, 4.2, 3,2.56,2,1,0,0]])

#분리
>>> X_data = array1[:,1:]
>>> Y_data = array1[:,:1]
>>>

>>> X = tf.placeholder(tf.float32, shape = [None, X_data.shape[1]])
>>> Y = tf.placeholder(tf.float32, shape = [None, 1])


>>> W = tf.Variable(tf.random_normal([X_data.shape[1],1]), name = 'weight')
>>> b = tf.Variable(tf.random_normal([1]), name = 'bias')
>>>
>>> hypothesis = tf.matmul(X, W) +b

>>> cost = tf.reduce_mean(tf.square(hypothesis - Y))
>>> optimizer = tf.train.GradientDescentOptimizer(learning_rate = 1e-5)
>>> train = optimizer.minimize(cost)
>>> sess = tf.compat.v1.Session()
>>> sess.run(tf.global_variables_initializer())


#학습
>>> for step in range(2001):
...     cost_val , hy_val,_ = sess.run([cost, hypothesis, train], feed_dict = {X:X_data, Y:Y_data})
...     if step % 100 == 0:
...             print("[", step, "] Cost:" , cost_val, "[prediction: ",hy_val,"\n")
...



#임의의 데이터 넣기
>>> one = np.array([0,3,4,5,7,8.56, 8, 8, 7.5, 4, 3,1])
>>> pre = sess.run(hypothesis, feed_dict = {X:one.reshape(1,X_data.shape[1])})
>>>   
>>> pre
array([[38.37631]], dtype=float32)



# 확인
>>> pre = sess.run(hypothesis, feed_dict = {X:X_data[2].reshape(1,X_data.shape[1])})
>>> X_data[2]
array([0.5 , 3.  , 4.85, 6.5 , 8.  , 8.23, 8.5 , 5.  , 4.5 , 3.2 , 1.  ,
       0.  ])
>>> pre
array([[33.43629]], dtype=float32)


#넣은 데이터 확인
>>> for step in range(X_data.shape[0]):
...     pre = sess.run(hypothesis, feed_dict = {X:X_data[step].reshape(1,X_data.shape[1])})
...     print("\n Pre : [" , pre, "]")

 

 

 

다시

 

a = [[30, 0, 4, 5, 7, 8, 7.5, 8, 8, 8.5, 4, 3, 1]
,[30, 0, 4, 5, 7, 8, 8, 8.5, 4, 3, 1,0,0]
,[30, 0.5, 3, 4.85, 6.5, 8, 8.23, 8.5, 5, 4.5, 3.2, 1, 0]
,[30, 0.5, 3, 6, 7.23, 7.5, 5, 4.5, 3.2, 1, 0, 0, 0]
,[30, 0.5, 3, 4.85, 6.5, 7, 8.23, 8.5, 5, 4.5, 3.2, 1, 0]
,[30, 0.5, 3, 6, 8.23, 7.5, 5, 4.5, 3.2, 1, 0, 0, 0]
,[30, 0.5, 3, 3.85, 5.57, 7.52, 8.23, 8.5, 5, 4.5, 3.2, 1, 0]
,[30, 0.5, 3, 5, 8, 5, 3.2, 1,1.521,1.22,0,0,0]
,[30, 0.5, 3, 5, 8, 7, 3.2, 1,1.521,1.22,0,0,0]
,[40, 0, 3, 6, 7, 9, 9, 9.5, 7, 4, 2,1,0]
,[40, 1.5, 2, 3.85, 5.5, 8, 9.23, 9.5, 8, 6.5, 5.2, 3, 2]
,[40, 1, 3, 6, 7, 9, 9, 9.5, 7, 4, 2,1,0]
,[40, 1.5, 2, 3.85, 5.5, 7, 9.23, 9.5, 8, 6.5, 5.2, 3, 2]
,[40, 1.25, 4, 6, 8.23, 8.5, 7, 5.5, 4.2, 1, 2, 1, 0]
,[40, 1.25, 4, 6, 8.23, 8.5, 7, 5.5, 3.2, 1, 2, 1, 0]
,[40, 1.5, 4, 4.85, 5.57, 6.52, 7.23, 8.5, 7, 5.5, 4.2, 2, 1]
,[40, 1.25, 4, 6, 8.23, 7.5, 7, 5.5, 4.2, 1, 2, 1, 0]
,[30, 0.5, 3, 3.85, 6.57, 7.52, 8.23, 8.5, 5, 4.5, 3.2, 2, 1]
,[50, 1.2345, 4, 4.85, 6.57, 8.52, 9.23, 9.5, 6, 5.5, 4.2, 3, 1]
,[50, 1, 4.52, 7, 9, 8, 4.2, 3,2.56,2,1,3,0]
,[50, 1, 4, 7, 7.55, 8, 9, 9.5, 8, 6, 5,4,2]
,[50, 1.5, 3, 3.85, 4.5, 7, 8.23, 9.5, 9, 8.5, 7.2, 3, 2]
,[50, 1.5, 2, 3.85, 4.5, 7, 8.23, 9.5, 9, 8.5, 7.2, 4, 2]
,[50, 1.5, 3, 3.85, 5.5, 7, 8.23, 9.5, 9, 8.5, 7.2, 5, 2]
,[50, 1.5, 3, 3.85, 6.5, 7, 8.23, 9.5, 9, 8.5, 7.2, 4, 2]
,[50, 1.5, 3, 4.85, 5.5, 7, 8.23, 9.5, 9, 8.5, 7.2, 3, 2]
,[50, 1, 4, 6, 7.55, 8, 9, 9.5, 8, 6, 5,4,2]]

 

학습을 한 뒤,

 

각 열의 값을 다시 넣어서 값 프린트 해봤더니

Pre : [ [[46.75972]] ]

 Pre : [ [[31.548428]] ]

 Pre : [ [[36.98503]] ]

 Pre : [ [[25.189035]] ]

 Pre : [ [[36.26932]] ]

 Pre : [ [[26.260065]] ]

 Pre : [ [[34.01662]] ]

 Pre : [ [[21.888231]] ]

 Pre : [ [[23.319647]] ]

 Pre : [ [[34.956734]] ]

 Pre : [ [[42.601963]] ]

 Pre : [ [[35.308285]] ]

 Pre : [ [[41.886253]] ]

 Pre : [ [[32.351498]] ]

 Pre : [ [[34.157917]] ]

 Pre : [ [[39.24333]] ]

 Pre : [ [[31.63579]] ]

 Pre : [ [[38.625755]] ]

 Pre : [ [[47.11372]] ]

 Pre : [ [[42.02036]] ]

 Pre : [ [[53.128895]] ]

 Pre : [ [[46.02556]] ]

 Pre : [ [[48.576]] ]

 Pre : [ [[53.40608]] ]

 Pre : [ [[51.32236]] ]

 Pre : [ [[48.725395]] ]

 Pre : [ [[51.50008]] ]

 

나왔다. 그냥 데이터가 많으면 잘 될 것 같다. 

 

[0,3,4,5,7,8,6,5,4,3.2, 2,1]

이 데이터를 넣어서 함 봤더니

array([[32.406696]], dtype=float32)

나왔다

 

 

>>> import tensorflow.compat.v1 as tf
>>> tf.disable_v2_behavior()

 

 

>>> x_train = [1,2,3]
>>> y_train = [1,2,3]
>>>
>>> W = tf.Variable(tf.random_normal([1]), name = 'weight')
>>> b = tf.Variable(tf.random_normal([1]), name = 'bias')

variable노드로 정의

tensorflow가 사용하는 variable -> 실행시키면 tensorflow가 자체적으로 사용하는 것

 

shap이 무엇이냐(랜덤), 이름

 

 

>>> cost = tf.reduce_mean(tf.square(hypothesis - y_train))

reduce = 평균내주는것

 

>>> optimizer = tf.train.GradientDescentOptimizer(learning_rate = 0.01)
>>> train = optimizer.minimize(cost)

optimizer정의, minimize-> W와 b 스스로 조정해서 cost구함 

 

그래프 구현됨,

 

 

 

실행 하려면 Session해야함

>>> sess.run(tf.global_variables_initializer())
>>>
>>> for step in range(2001):
...     sess.run(train)
...     if step % 20 == 0:
...             print(step, sess.run(cost), sess.run(W), sess.run(b))

variable실행하기 전에는 global_variable_initializer해야 한다. 

 

 

결과 값

0 0.004482827 [0.9443451] [0.06213798]
20 0.0007200699 [0.9673146] [0.06817147]
40 0.0006235919 [0.97078884] [0.06582024]
60 0.00056608004 [0.9723461] [0.0628081]
80 0.0005141205 [0.9736634] [0.05986408]
100 0.00046693053 [0.97490275] [0.05705139]
120 0.00042407462 [0.9760824] [0.05437026]
140 0.00038515366 [0.9772064] [0.05181508]
160 0.0003498014 [0.9782776] [0.04937999]
180 0.00031769645 [0.9792984] [0.04705936]
200 0.0002885371 [0.9802714] [0.04484779]
220 0.00026205392 [0.98119855] [0.04274009]
240 0.00023800116 [0.9820821] [0.04073146]
260 0.00021615803 [0.98292416] [0.03881725]
280 0.00019631743 [0.98372674] [0.036993]
300 0.00017829782 [0.9844915] [0.03525446]
320 0.00016193358 [0.9852203] [0.03359763]
340 0.00014707215 [0.9859149] [0.03201869]
360 0.00013357187 [0.9865769] [0.03051394]
380 0.00012131266 [0.98720765] [0.0290799]
400 0.000110177694 [0.9878088] [0.02771328]
420 0.00010006648 [0.9883818] [0.02641088]
440 9.0881986e-05 [0.98892784] [0.02516968]
460 8.253934e-05 [0.9894482] [0.02398681]
480 7.496376e-05 [0.9899441] [0.02285952]
500 6.808351e-05 [0.9904167] [0.02178513]
520 6.1833765e-05 [0.99086714] [0.02076128]
540 5.6157976e-05 [0.99129635] [0.01978554]
560 5.100429e-05 [0.99170536] [0.01885567]
580 4.6322017e-05 [0.99209523] [0.0179695]
600 4.2071086e-05 [0.9924667] [0.01712498]
620 3.8209277e-05 [0.9928207] [0.01632018]
640 3.4702516e-05 [0.9931581] [0.01555322]
660 3.151784e-05 [0.99347967] [0.01482228]
680 2.86249e-05 [0.99378604] [0.0141257]
700 2.5997879e-05 [0.9940781] [0.01346186]
720 2.3611e-05 [0.9943564] [0.0128292]
740 2.1444072e-05 [0.99462163] [0.01222627]
760 1.9476416e-05 [0.99487436] [0.01165172]
780 1.7688893e-05 [0.9951152] [0.01110416]
800 1.606514e-05 [0.9953449] [0.0105823]
820 1.4590369e-05 [0.9955636] [0.01008495]
840 1.3251399e-05 [0.9957721] [0.00961099]
860 1.2034613e-05 [0.9959708] [0.00915931]
880 1.0930289e-05 [0.99616015] [0.00872885]
900 9.926851e-06 [0.9963406] [0.00831865]
920 9.016116e-06 [0.99651253] [0.00792773]
940 8.188387e-06 [0.99667645] [0.00755517]
960 7.436943e-06 [0.99683267] [0.00720011]
980 6.7545097e-06 [0.9969815] [0.00686174]
1000 6.134145e-06 [0.99712336] [0.00653927]
1020 5.571436e-06 [0.99725854] [0.00623195]
1040 5.060231e-06 [0.9973874] [0.00593907]
1060 4.595509e-06 [0.9975102] [0.00565995]
1080 4.17375e-06 [0.9976272] [0.00539395]
1100 3.7907303e-06 [0.9977387] [0.00514045]
1120 3.442783e-06 [0.997845] [0.00489886]
1140 3.1268198e-06 [0.9979462] [0.00466865]
1160 2.8398774e-06 [0.99804276] [0.00444925]
1180 2.5791542e-06 [0.99813473] [0.00424015]
1200 2.3423493e-06 [0.9982224] [0.00404088]
1220 2.127582e-06 [0.998306] [0.00385098]
1240 1.932089e-06 [0.99838555] [0.00367]
1260 1.7548537e-06 [0.99846137] [0.00349755]
1280 1.593911e-06 [0.99853367] [0.00333321]
1300 1.4475062e-06 [0.9986026] [0.00317659]
1320 1.314707e-06 [0.99866825] [0.00302731]
1340 1.1940488e-06 [0.99873084] [0.00288505]
1360 1.0845918e-06 [0.99879044] [0.00274948]
1380 9.850884e-07 [0.99884737] [0.00262029]
1400 8.9452607e-07 [0.9989015] [0.00249717]
1420 8.1248487e-07 [0.99895304] [0.00237982]
1440 7.3786003e-07 [0.9990023] [0.00226801]
1460 6.701368e-07 [0.9990492] [0.00216144]
1480 6.086809e-07 [0.9990939] [0.00205987]
1500 5.528352e-07 [0.9991364] [0.00196308]
1520 5.0212356e-07 [0.999177] [0.00187084]
1540 4.560474e-07 [0.99921566] [0.00178294]
1560 4.1417343e-07 [0.99925244] [0.00169918]
1580 3.7618702e-07 [0.9992876] [0.00161937]
1600 3.4163455e-07 [0.9993211] [0.00154327]
1620 3.1034298e-07 [0.99935293] [0.00147077]
1640 2.818894e-07 [0.99938333] [0.00140169]
1660 2.560083e-07 [0.9994123] [0.00133585]
1680 2.3252926e-07 [0.99943995] [0.00127311]
1700 2.1121163e-07 [0.9994663] [0.00121331]
1720 1.9178516e-07 [0.9994914] [0.00115631]
1740 1.7425428e-07 [0.99951524] [0.00110202]
1760 1.5823713e-07 [0.99953794] [0.00105029]
1780 1.4376748e-07 [0.9995596] [0.00100099]
1800 1.3057314e-07 [0.9995802] [0.000954]
1820 1.1861422e-07 [0.99959993] [0.00090921]
1840 1.0773581e-07 [0.99961877] [0.00086652]
1860 9.7852535e-08 [0.99963665] [0.00082589]
1880 8.8909566e-08 [0.9996536] [0.00078714]
1900 8.074753e-08 [0.9996699] [0.00075019]
1920 7.332803e-08 [0.9996854] [0.00071503]
1940 6.665119e-08 [0.99970007] [0.00068147]
1960 6.0536365e-08 [0.9997143] [0.00064951]
1980 5.4979093e-08 [0.99972755] [0.00061905]
2000 4.9936585e-08 [0.9997405] [0.00058999]

진행될수록 cost 값 작아지고, w값 : 1로 , b = 0으로 수렴하는 걸 볼 수 있다.

 

 

 

 

값을 던져주고 싶을 때는 placehloders를 사용하는데

먼저 정의해주고

>>> X = tf.placeholder(tf.float32)
>>> Y = tf.placeholder(tf.float32)

 

 

>>> for step in range(2001):
...     cost_val, W_val, b_val, _ = \
...             sess.run([cost, W, b, train],
...                     feed_dict = {X: [1,2,3], Y:[1,2,3]})
...     if step % 20 == 0:
...             print(step, cost_val, W_val, b_val)

fedd_dict를 통해서 넘겨 줄 수 있다. 

sess을 실행 시킬 때에도, 리스트로 묶어서 한꺼번에 다 실행 시키기 가능 ( 그 때, 필요한 데이터 넘겨주기 가능)

 

>>> X = tf.placeholder(tf.float32, shape = [None])
>>> Y = tf.placeholder(tf.float32, shape = [None])

shape도 줄 수 있는데, 갯수는 여러개 -> 넘겨줄때, 

    fee_dict = {x: [1,2,3,4,5], Y: [2.1, 3.1, 4.1, 5.1 ....]})

이렇게 넘겨 줄 수 있다는 말

 

 

 

 

 

#5일때 값 간단하게 구할 수 있다. 
print(sess.run(hypothesis, feed_dict = {X: [5]}))

 

https://www.youtube.com/watch?v=mQGwjrStQgg&feature=youtu.be

 

>>> import tensorflow.compat.v1 as tf
>>> tf.disable_v2_behavior()
>>>
>>>
>>> x_data = [1,2,3]
>>> y_data = [1,2,3]
>>>
>>> W = tf.Variable(tf.random_normal([1]), name='weight')

import하면 비어있는 그래프가 만들어짐

W = tf.Variable(tf.random_normal([1]), name='weight')

    ->w의 값 variable로 선언하고 random값 

 

 

>>> X = tf.placeholder(tf.float32)
>>> Y = tf.placeholder(tf.float32)

x,y값 던져주고 싶어서 만들고

 

 

수동으로 cost를 설정

>>> learing_rate = 0.1
>>> gradient = tf.reduce_mean((W * X - Y) * X)
>>> descent = W - learing_rate * gradient
>>> update = W.assign(descent)

learing_rate는 알파

reduce_mean() : 평균값

assign() : 변수값 바꾸고 싶으면

 

 

>>> sess = tf.Session()
>>>
>>> sess.run(tf.global_variables_initializer())

Session()은

파이썬 객체와 데이터, 객체의 메모리가 할당되어 있는 실행 환경 사이를 연결,

중간 결과를 저장,

최종 결과를 작업 환경으로 보내준다.

 

Session.run()

   연산 그래프 실행

https://excelsior-cjh.tistory.com/151

 

[러닝 텐서플로]Chap03 - 텐서플로의 기본 이해하기

Chap03 - 텐서플로의 기본 이해하기 텐서플로의 핵심 구축 및 동작원리를 이해하고, 그래프를 만들고 관리하는 방법과 상수, 플레이스홀더, 변수 등 텐서플로의 '구성 요소'에 대해 알아보자. 3.1 ��

excelsior-cjh.tistory.com

 

tf.global_variables_initializer() : 변수 초기화

 

 

 

 

>>> for step in range(21):
...     sess.run(update, feed_dict={X: x_data, Y:y_data})
...     print(step, sess.run(cost, feed_dict={X : x_data, Y: y_data}), sess.run(W))

updata를 실행시켜줌 x_data, y_data를 던져주면서

 

 

결과

step / cost / W

0 0.012103487 [0.970597]
array([0.98431844], dtype=float32)
1 0.0034427664 [0.98431844]
array([0.9916365], dtype=float32)
2 0.0009792704 [0.9916365]
array([0.9955395], dtype=float32)
3 0.00027854493 [0.9955395]
array([0.99762106], dtype=float32)
4 7.923102e-05 [0.99762106]
array([0.99873126], dtype=float32)
5 2.2535067e-05 [0.99873126]
array([0.9993233], dtype=float32)
6 6.411002e-06 [0.9993233]
array([0.9996391], dtype=float32)
7 1.8234161e-06 [0.9996391]
array([0.99980754], dtype=float32)
8 5.186591e-07 [0.99980754]
array([0.99989736], dtype=float32)
9 1.475607e-07 [0.99989736]
array([0.9999453], dtype=float32)
10 4.1876277e-08 [0.9999453]
array([0.9999708], dtype=float32)
11 1.1962996e-08 [0.9999708]
array([0.99998444], dtype=float32)
12 3.3937688e-09 [0.99998444]
array([0.9999917], dtype=float32)
13 9.580283e-10 [0.9999917]
array([0.9999956], dtype=float32)
14 2.7553426e-10 [0.9999956]
array([0.9999977], dtype=float32)
15 7.48237e-11 [0.9999977]
array([0.99999875], dtype=float32)
16 2.2385649e-11 [0.99999875]
array([0.99999934], dtype=float32)
17 5.7873706e-12 [0.99999934]
array([0.99999964], dtype=float32)
18 1.5489832e-12 [0.99999964]
array([0.9999998], dtype=float32)
19 3.872458e-13 [0.9999998]
array([0.9999999], dtype=float32)
20 2.9842795e-13 [0.9999999]

실행 시킬 수록 cost작아짐

W는 1에 가까운 수가 된다. 

 

 

 

 

1. 그래프 빌드

2. sess.run통해서 그래프 실행

3. 실행 결과 돌려줌 

 

 

1. H(x) = Wx + b

x와 y값 주어짐

x_train = [1,2,3]

y_train = [1,2,3]

 

Variable 이란 -> 텐서플로우가 자체적으로 변경해주는 값, 학습해주는 과정에서 변경해준다. 

shap이 무엇이냐, -> 처음에는 보통 랜덤값으로 준다. 

 

 

 

 

minimize -> 자기 스스로 x,y조절하면서 

 

 

matplotlib를 사용한다.

 

cmd창에서 설치를 한 뒤

 

>>> import tensorflow.compat.v1 as tf
>>> X = [1,2,3]
>>> Y = [1,2,3]

>>> W = tf.placeholder(tf.float32)

했는데 

 

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "", line 3023, in placeholder
    raise RuntimeError("tf.placeholder() is not compatible with "
RuntimeError: tf.placeholder() is not compatible with eager execution

 

오류가 났다. 

 

 

 

또 버전 문제인가 해서 

 W = tf.compat.v1.placeholder(tf.compt.v1.float32)

이걸 사용해 봤지만 여전히 오류가 났다. 

 

 

 

 

갑자기 실습 1 때 했던 것이 기억나서 

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

v1버전을 임포트 해오고

v2버전을 비활성화하는 내용이다. 

 

 

 

어쨋든 넘어가고

 

 

 

 

>>> hypothesis = X * W
>>>
>>> cost = tf.reduce_mean(tf.square(hypothesis - Y))
>>> sess = tf.Session()

또, 오류 생겼다. 

Session 할 때마다 생기는 것 같아서 구글랭 해봤는데

일부가 유지보수가 중단 되어서 v1를 사용해라는 권고메시지였다.

 

 

http://blog.daum.net/ejleep1/928

 

1-2 TensorFlow 2.0 업그레이드 후 출현하는 에러 메시지 처리 요령

텐서플로우 2.0 으로 업그레이드 후 1.6 버전에서 실행에 아무런 문제가 없던 코드를 실행한 결과 다음의 메시지가 출현했다. 예를 들면 tf.placeholder 가 유지보수가 중단(deprecated)되었으므로 tf.compa

blog.daum.net

 

 

 

 

 

>>> sess = tf.compat.v1.Session()
>>> sess.run(tf.global_variables_initializer())
>>>
>>> W_val = []
>>> cost_val = []
>>>

-> 그래프를 구동하기 위해 Session을 열고,

-> sess.run(tf.globla_variables_initializer() -> varialbe 초기화

-> W값, cost의 값 저장할 리스트 만들기 (W_val = [], cost_val = [] )

 

 

 

 

>>> for i in range(-30, 50):
...     feed_W = i * 0.1
...     curr_cost, curr_W = sess.run([cost, W], feed_dict = {W: feed_W})

-> -3에서 5까지 0.1간격으로 짧게 움직이겠다

-> feed_dict = {W: feed_W} : W값 넘기면서

-> cost와 W가 어떻게 변하는지 curr_cost에 넣기

 

 

 

for문 하던 도중에 에러가 생기면

고치고 다시 for문 시작해야 한다.

python은 tab을 따지기 때문에,

다시 안하면,

curr_cost, curr_W = sess.run([cost, W], feed_dict = {W: feed_W})
  File "<stdin>", line 1
    curr_cost, curr_W = sess.run([cost, W], feed_dict = {W: feed_W})
    ^
IndentationError: unexpected indent

이런 오류 생긴다.

for문 할때는 ...있을 때!

 

 

 

 

다시 for문 입력해서 

>>> for i in range(-30, 50):
...     feed_W = i * 0.1
...     curr_cost, curr_W = sess.run([cost, W], feed_dict = {W: feed_W})
...     W_val.append(curr_W)
...     cost_val.append(curr_cost)
...

 

 

 

plot를 이용해서 x축이 W이고, y축이 cost인 그래프 그려보자,

>>> plt.plot(W_val, cost_val)
[<matplotlib.lines.Line2D object at 0x000002D5C5A1E2C8>]
>>> plt.show()

 

 

 

최소화 하는 값은 W가 1인 값,

 

 

ML lab 01 - TensorFlow의 설치및 기본적인 operations (new) 

강의를 보고, 실습을 한번 해보겠다. 

https://www.youtube.com/watch?v=-57Ne86Ia8w&feature=youtu.be

그래프 빌드

>>> import tensorflow as tf
>>> node1 = tf.constant(3.0, tf.float32)
>>> node2 = tf.constant(4.0)
>>> node3 = tf.add(node1, node2)

먼저 import tensorflow as tf 란 tensorflow란 이름이 길어서 tf라는 이름으로 쓴다는 말.

 

이게 tensorflow 1.0버전에서는 가능한데

tensorflow 2.2 버전에서 사용하려면 

 

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

을 사용하면 Session사용이 가능하다. 

 

 

>>> print("node1:", node1, "node2: ", node2)
node1: Tensor("Const_1:0", shape=(), dtype=float32) node2:  Tensor("Const_2:0", shape=(), dtype=float32)



>>> print("node3: ",node3)
node3:  Tensor("Add:0", shape=(), dtype=float32)

그 다음 노드를 출력해주는데 이게 신기하게도 tensro의 값이 나오지 않고

그래프의 (Tensor)라고 만 말해줌

 

그래프의 값을 출력하기 위해서는

Session을 사용해야 한다. 

 

sess = tf.Session()

해줘야 하는데 오류가 난다. 

 

>>> sess = tf.Session()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'tensorflow' has no attribute 'Session'

 

 

구글링 결과

sess = tf.compat.v1.Session()

이걸 사용해줘야 한다. 

위에서 사용은 했지만 왜인지 몰라도 또 해줘야 한다. 

 

버전이 달라서 문제였었다. 

 

>>> sess = tf.compat.v1.Session()

>>> print("sess.run(node1, node2): ", sess.run([node1, node2]))
sess.run(node1, node2):  [3.0, 4.0]

>>> print("sess.run(node3): ", sess.run(node3))
sess.run(node3):  7.0

바꿔 주니깐

답이 나왔다

 

sess.run()이 그래프를 실행 시켜주고

괄호 안에 실행시켜주고싶은 노들를 넣는다. 

 

 

 

 

텐서플로우 구조

1. 그래프를 빌드

     node1 = ...

     node2 = ...

     node3 = ....

 

2. sess.run( ) 그래프 실행

    sess.run([node1, node2])

 

3. 값 리턴

   

 

 

 

실행 시켜주는 단계에서 값 던져주고 싶을 때, 

 

1. 노드를 placeholder로 만들어 준다

2. 노드 두개를 이용해서 adder_node를 만들어줌

3. session 만들고 실행

 

 

>>> a = tf.placeholder(tf.float32)
>>> b = tf.olaceholder(tf.float32)

해주는데 또 

 

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'tensorflow' has no attribute 'placeholder'

 

오류가 났다. 

 

다시

>>> import tensorflow.compat.v1 as tf

해주니깐 됐다. 

 

 

텐서플로우 입장에서는 값을 출력하고 싶은데 몰라서

feed_dict를 이용해서 값을 넘겨준다. 

 

값을 주면서 실행 시켜라 ,

>>> adder_node = a+b
>>> print(sess.run(adder_node, feed_dict = {a: 3, b: 4.5}))
7.5
>>> print(sess.run(adder_node, feed_dict = {a: [1,3], b: [2,4]}))
[3. 7.]

n개의 값을 넘겨 줄 수도 있다. 

 

 

이런 식이 된다. 

 [ ( 1+2 ), ( 3 + 4 ) ]

 

 

1. 그래프 정의

 placeholder 만들기 가능

2. 실행 시킬 때, feed_dict로 값을 넣어줌 

  feed_dict = {a: ...}

3. 출력값 리턴해주거나, 값 update를 한다. 

 

 

 

Tensor

- array같이 보면 된다. 

-> Ranks (몇 차원 array이냐)

->Shapes (몇 개씩 들어 있느냐)

    t = [[1,2,3] , [4,5,6], [7,8,9]]

    [3,3]

 

-> Types

 

 

 

 

일단 GUI를 깔아서 우분투 Terminal에 가서 

 

오류 확인을 한다. 

 

sudo systemctl status systemd-modules-load.service

 

 

쪼라라ㅏ락 나오는데 

 

failed to find module 'parport_pc'ubuntu systemd-modules-load[3040] : Failed to find module 'parpot_ps'

 

faild to find module 'ib_iser'

 

 

 

 

1. sudo nano /etc/modules-load.d/*.conf

한 뒤

 

# Parallel printer driver modules loading for cups

# LOAD_LP_MODULE was 'yes' in /etc/default/cups

lp

ppdev

parport_pc

 

 

이것들을 다 #붙이고

 

F3누르고 enter 하고 ctrl+x

하고 다시 부팅

확인 systemctl status systemd-modules-load.service

 

 

2. sudo nano /lib/modules-load.d/open-iscsi.conf

한 뒤

 

ib_iser을 #ib_iser로 바꾸고 

F3누르고 enter 하고 ctrl+x

하고

부ㅜ팅

확인 systemctl status systemd-modules-load.service

 

 

'project > raspberrypi' 카테고리의 다른 글

raspberrypi 4에 ubuntu server 올리기  (0) 2020.07.04

https://ubuntu.com/download/raspberry-pi

 

Install Ubuntu Server on a Raspberry Pi 2, 3 or 4 | Ubuntu

Ubuntu is an open-source operating system for cross platform development, there’s no better place to get started than with Ubuntu on a Raspberry Pi.

ubuntu.com

여기로 가서 20.04LTS버전은 했다가 오류가 나서(?)

 

Ubuntu 18.04버전을 깔았다. 

 

PC에 저장뒤

7-Zip으로 풀고

 

win32Disklmager or balenaEtchar을 이용해서 SD카드에 올리고

 

라즈베리파이를 켰다.

 

 

 

처음 ID는 ubuntu

password도 ubuntu이다.

 

록그인을 하면 다시 새로운 비밀번호를 바꾸라고 한다. 

 

바꾸고 

 

 

ubuntu GUI를 쓸 것이기 때문에

GUI를 깔도록 하겠다.

 

 

인터넷이 되는 랜선을 연결을 한 뒤,

(안되면 수동으로 ip를 할당하였다 -> 주소창에 와이파이 아이피 적고

로그인 한 후 

안 쓰는 IP주소를 할당했다. 

   할당하는 방법 : cmd창에 ipconfig 검색 후 

                        무선 LAN 어뎁터 Wi-Fi에 기본 게이트웨이 본다

                        주소창에 그대로 입력 (ex, 1xx.xxx.x.x)

                        로그인해라고 하면 하고

                       

                       관리도구 -> 고급설정 -> 네트워크 관리 -> DHCP 서버 설정 -> (맨 밑) 수동 주소 입력 -> 1xxx.xxx.x.x. 입력 뒤 -> (라즈베리파이 우분투 server에서) ifconfig로 가서 사용할 디바이스 확인후 ether에 있는 주소를 입력 한다. (ex, dc:xx:xx:xx:xx ---) -> 수동 등록

 

 

 

 

 

sudo apt-get update를 한 후 

sudo apt-get upgrade

 

sudo apt-get install ubuntu-desktop

한 뒤 기다리면 끝 ㅎㅎ

 

 

+ Recent posts