반응형
Linear regression은 hypothesis 함수를 이용하여 데이터에 맞는 함수의 파라미터를 학습하는 알고리즘입니다.
(1,3) (2,5) (3,7) 라는 데이터를
데이터를 제일 잘 표현하는
y = ax+b라는
hypothesis(가설) 함수의 variable a&b를 학습하게 된다.
Hypothesis라고 부르는 이유는 이러한 1차원 함수가 저 데이터를 나타낼 수 있다고 가정하기 때문입니다.
improt tensorflow as tf # 트레이닝 데이터 정의 x_data = [1,2,3] y_data = [3,5,7] # 트레이닝 데이터를 넣을 placeholder를 정의, placeholder는 사이즈를 지정할 필요 없다. x = tf.placeholder(tf.float32, name = "x") y = tf.placeholder(tf.float32, name= "y" ) #학습할 파라미터(variable)정의, 스칼라 값이므로 shape은 []로 만든다. a = tf.Variable(tf.random_normal([],mean = 0, stddev= 1),name = "a") b = tf.Variable(tf.zeros([]), name ="b") #본격 함수 정의, x_data를 넣게되면 array형태의 결과 값이 나온다. hyp = a*x + b #코스트 함수(추측된 y 값과 실제 y값의 차이를 최소화한다. mean square error cost = reduce_mean(tf.square(hyp-y)) #gradient descent optimizer를 선언하고 위에 선언한 cost 함수와 물린다. optimizer = tf.train.GradientDescentOptimizer(learning_rate = 0.1) train = optimizer.minimize(cost) #with 문구로 선언하여 session를 따로 close 할 필요가 없어진다. with tf.Session() as sess: #변수 초기화를 해준다. 이때 위에서 선언한 random_normal등이 실행되게 된다. sess.run(tf.global_variables_inializer()) #50회를 반복하고 반복할때마다 학습된 값을 출력한다. for iter in range(50): _ , c_val = sess.run([train, cost], feed_dict = {x: x_data, y:y_data}) print(iter,c_val, sess.run(a), sess.run(b)
반응형
'머신러닝 읽어주는 남자' 카테고리의 다른 글
[오직 컨셉]RNN, LSTM, GRU, Seq2Seq (0) | 2018.04.12 |
---|---|
[오직 컨셉]Neural network training (0) | 2018.04.10 |
[오직 컨셉]CNN(convolutional neural network) (0) | 2018.04.10 |
[Tensorflow 101 - 2] 기본 Neural Network Classifier(Feed Forward NN) (0) | 2018.01.25 |
[Tensorflow 101 - 인트로] 텐서플로우 시작을 위한 기초 및 기본상식 (0) | 2018.01.24 |