(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..
연결 리스트에는 단순 연결 리스트, 원형 연결 리스트, 이중 연결 리스트, 이중 원형 연결 리스트가 있다. 단순 연결 리스트는 단순히 연결만 되어있는 연결 리스트이다. 그럼 단순 연결 리스트를 구현해보겠다. 12345struct ListNode { int data; struct ListNode *link; };cs 이 부분은 노드와 노드의 데이터 필드와 링크 필드를 선언 해주는 부분이다. 12345struct ListNode *p1; p1 = (struct ListNode*)malloc(sizeof(struct ListNode)); p1->data = 10; p1->link = NULL; Colored by Color Scriptercs 이 부분은 p1이라는 노드를 만들고, p1에 메모리를 동적할당 한다..
연결 리스트(linked list)란? 말 그대로 연결된 리스트. 연결리스트를 사용하는 이유는 선형리스트와는 달리 원소의 삽입,삭제 연산을 할때 원소의 주소에 의해 순서가 연결되는 방식이기 때문에 오버헤드가 발생하지 않는다는 장점이 있고, 원소들 각각을 연결하여 전체를 이루기 때문에 크기변경에 용이하고 메모리 관리를 좀 더 효율적으로 할 수 있다는 장점이 있기 때문이다. 연결리스트는 노드들로 연결 되어 있다. 노드는 값을 저장하는 데이터 필드(Data field)와 다음 노드의 주소를 가지고 있는 링크 필드(Link field)로 구성되어 있다. 노드는 필요할 때마다 동적 메모리 생성을 이용하여 생성한다.
bit란? 2진수 하나의 값을 저장할 수 있는 최소의 메모리 공간이다. bit의 갯수는 2의 n제곱개만큼 있다. 예를들면 3bit는 000,001,010,100,011,101,110,111 이렇게 2의 3제곱, 8개가 있다. byte란? ASCII문자 하나를 저장 할 수 있는 최소의 메모리 공간이다. 1byte = 8bit로 bit가 8개가 모여 1byte가 된다. bit 와 byte가 무엇인지 알아보았으니 비트 연산자에 대해 알아보겠다. 비트연산자의 종류에는 이 정도가 있다. 1. 비트단위 and 연산 이것은 a,b를 입력받아 and 연산을 해주는 프로그램이다. 입력을 6 , 4로 한다면 6 : 0000 0110 3 : 0000 0011 6&3 0000 0010 이므로 값은 2가 된다. 2. 비트단위 ..