텐서플로우 구조
먼저 그래픽을 만듭니다.
그 다음 sess.run으로 실행시키는데요.
그리고 그래프를 업데이트 해주는 것입니다.
그래프 실행 값을 던져줄 때
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
adder_node = a + b
print(sess.run(adder_node, feed_dict = {a: 3, b: 4.5}))
print(sess.run(adder_node, feed_dict = {a: [1,3], b: [2.4]}))
이렇게 placeholder로 던져줄 수 있습니다.
regression
(Linear)가설
Linear한 모델이 우리 데이터에 맞을 것이다 라고 가정을 합니다.
가정을 했을 때 Linear 즉 선을 긋습니다. 가능한 선이 어디인지 확인을 하는 것입니다.
Hx는 가설이 됩니다. Wx+b라는 공식이 나오게 되는데요. 이 선의 모양이 W와 b에 따라 선의 모양이 달라지는 것입니다. 우리는 가설을 이런 1차 방정식으로 될 것이라고 가설을 하는 것입니다.
그러면 이렇게 나타난 선들 중에서 어떠한 것이 가장 잘 맞는 선일까를 알아내야 합니다.
파란 선을 보면 H(x) = 1 * x + 0 이 됩니다. 따라서 W는 1 b는 0이 되는 것입니다.
그런데 어떤 선이 좋은 가설일지 알 수 있을까요?
실제 데이터와 가설이 나타내는 데이터 점과의 거리를 비교
거리가 멀면 나쁜 것이고 거리가 작으면 좋은 것입니다. 이것을 linear regression에서는 Cost Function이라고 부릅니다. 가설과 실제 데이터가 얼마나 다른지 알려주는 것입니다.
(H(x) - y)^2이 됩니다. 이런 경우 차이를 양수로 표현해주고 차이가 클 때 패널티를 주면서 차이를 작게 만들 수 있도록 만들어주는 것이며 이것이 cost function이라고 부릅니다.
그래프 코드 만드는법
1.그래프 구성
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')
hypothesis = x_train * W + b
이렇게 W와 b를 만들어서 표현을 할 수 있습니다.
cost = tf.reduce_mean(tf.square(hypothesis - y_train))
이런 식으로 그래프를 구성해줍니다.
2. Run/update graph and get result
#Launch the graph in a session
sess = tf.Session()
#Initializes globalvariables in the graph.
sess.run(tf.global_variable_initializer())
#Fit the Line
for step in range(2001):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(cost), sess.run(W), sess.run(b))
'IT 프로그래밍 > 자료구조' 카테고리의 다른 글
[C++] string 클래스와 getline 사용법 (0) | 2024.09.06 |
---|---|
[C언어] 문자열 string, fgets 설명 (0) | 2024.09.06 |
동적 메모리 할당과 동적 객체 생성 (0) | 2024.09.02 |
포인터, 배열, 포인터 산수 (0) | 2024.09.02 |
포인터에 관한 기본적인 개념 설명 및 예제 (0) | 2024.09.02 |