12345678910111213141516171819202122232425262728import tensorflow as tf x_data = [1,2,3]y_data = [1,2,3] W = tf.Variable(tf.random_normal([1]), name = 'weight') X = tf.placeholder(tf.float32)Y = tf.placeholder(tf.float32) hypothesis = W * X cost = tf.reduce_sum(tf.square(hypothesis -Y)) learning_rate = 0.1gradient = tf.reduce_mean((W * X - Y) * X)descent = W - learning_rate * gradientupdate = W.a..
손실값을 최소화 하기 위한 최적화 알고리즘이다. 손실값을 최소화 해주는 W,b값을 찾아주는 알고리즘인데, 그래프의 기울기를 구하고, 기울기를 계속 낮춰가면서 가장 최적화된 W,b의 값을 찾아 나가는 방법이다. cost function은 평균적으로 Hypothsis에 얼마나 떨어져 있는지를 구하는 함수이다. cost function을 미분식에 대입하고미분을 하면최종적으로 위와같은 식이 나온다. 경사하강법은 국소 최적해(local minimum)의 위험이 있기 때문에 convex function을 사용한다.
일반적인 퍼셉트론으로는 XOR게이트를 구현할 수 없기 때문에 퍼셉트론으로 나온 AND, OR ,NAND 게이트를 조합하여 XOR게이트를 구현 할 수 있다. 위의 그림처럼 NAND연산, OR연산으로 나온 값을 AND연산하여 구하면 XOR연산이 된다. XOR의 진리표이다. 123456789def XOR(x1, x2): s1 = NAND(x1,x2) s2 = OR(x1,x2) y = AND(s1,s2) return y cs
(x1w1 + x2w2 θ) = 1 위의 수식에서 θ을 -b로 바꾸면 (x1w1 + x2w2 +b 0) = 1 이렇게 된다. 이런식으로 편향을 이용하여 AND,OR,NAND 게이트를 구현할 수 있다. 배열끼리의 연산을 하기 위해 numpy를 사용했다. AND 게이트 12345678910111213def AND(x1,x2) x = np.array([x1,x2]) w = np.array([0.5, 0.5]) b = -0.7 tmp = np.sum(x*w) + b if tmp
AND게이트의 진리표이다. 입력신호 x1, x2가 둘 다 1 이어야 1을 출력한다. 1234567891011def AND(x1,x2): //insert x1, x2 w1, w2, theta = 0.5,0.5,0.7 //x1,x2의 가중치, 임계값 설정 tmp = x1*w1 + x2*w2 if tmp theta: return 1 Colored by Color Scriptercs OR 게이트의 진리표이다. x1, x2중 1이 하나라도 있으면 1을 출력한다. 123456789def OR(x1,x2): w1, w2, theta = 0.5, 0.5 ,0.3 tmp = x1*w1 + x2*w2 if tmp theta: return 1 cs NAND 게이트는 0이 하나라도 있으면 1을 출력한다. 123456789de..
123456789101112131415161718192021222324252627282930import tensorflow as tf X = tf.placeholder(tf.float32, shape=[None]) //shape이 None인 placeholderY = tf.placeholder(tf.float32, shape=[None])W = tf.Variable(tf.random_normal([1]), name = 'weight')b = tf.Variable(tf.random_normal([1]), name = 'bias') Hypothesis = x_train * W +b //define Hypothesis cost = tf.reduce_mean(tf.square(Hypothesis - y_trai..
123456789101112131415161718192021222324252627import tensorflow as tf 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 //define Hypothesis cost = tf.reduce_mean(tf.square(Hypothesis - y_train)) // 평균값을 냄 optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01) //경사 하강..
이런 x값, y값이 있다고 하면 regression 모델이 위에 나오는 training data들을 가지고 training을 하면 내부적으로 어떠한 모델을 만들어 낸다. 그러면 x를 넘겨주면 y를 리턴해 주는 형식으로 만들어진다. 위의 값들이 학습을 할 데이터이다. Linear Hypothesis란 선으로 하는 가설인데, 위의 데이터가 x,y축 위에 있다고 하면 이런 그림으로 그려진다. 그러면 여기에 선을 그리는 것이 가설을 세우는 것이다. 그리고 이중 가장 데이터에 가까운 선을 찾는 과정이 학습하는 과정이라고 할 수 있다. Linear Hypothesis의 과정을 살펴보자. 1. 가설을 세운다. H(x) = Wx + b 라는 1차함수의 그래프로 나타나게 되는데, 이때 W,b 값에 따라서 그래프의 개형이..
텐서플로우는 data flow graph를 이용한 숫자 계산을 할 수 있는 오픈소스 소프트웨어 라이브러리이다. 데이터 플로우 그래프는 노드와 노드 사이를 엣지로 연결한 것을 말하는데, 노드는 무슨 연산을 할지에 대한 operation 이고 엣지는 넘겨받을 데이터이다.이때 엣지를 tensor 라고도 한다. 1pip3 install --upgrade tensorflow cs 텐서플로우의 설치는 이렇게 한다. cmd창 띄워놓고 거기다가 이렇게 치면 됨. 123456789import tensorflow as tf hello = tf.constant("Hello, Tensorflow!") sess = tf.Session() print(sess.run(hello)) Colored by Color Scriptercs..