반응형
텐서플로우로 아주 간단한 classifier를 만들어봅시다.
흔한 예제인 스팸필터를 만든다고 생각해봅니다.
광고라는 단어가 있으면 1 없으면 0
상관 없는 단어인 김치라는 단어가 있으면 1, 없으면0
전화번호가 저장되어 있으면 1, 없으면 0이라고 해봅시다.
[1,1, 1]은 광고라는 단어도 있고, 김치라는 단어도 있고, 전화번호도 저장되어 있는 경우입니다.
상식적으론
데이터 [1,0,0], [1,1,0] => 스팸 [1,0]
나머지 데이터 => no 스팸 [0,1]
일겁니다. 이걸 구별하는 코드를 만들어 봅시다.
(트레이닝 데이터와 테스트 데이터와 동일하므로 좋은 예는 아니겠지만)
import tensorflow as tf import numpy as np #트레이닝 데이터 만들기 x_data = np.array([[1,1,1], [1,1,0], [1,0,1], [1,0,0],[0,1,1],[0,1,0],[0,0,1],[0,0,0]]) y_data = np.array([[0,1] , [1,0], [0,1], [0,1], [0,1], [0,1], [0,1], [0,1]]) #데이터를 넣을 곳을 만들기 x = tf.placeholder(tf.float32,name = "x") y = tf.placehoder(tf.float32, name = "y") #학습할 파라미터 선언 하기 w= tf.Variable(tf.zeros([3,2]), name = "w") b= tf.Variable(tf.zeros[2], name = "b") #net input을 구한다. net_input = tf.add(tf.matmul(x,b),b) #activation function을 통과 시킨다. activation = tf.relu(net_input) #softmax를 통과시켜서 일반 값을 확률값으로 변모 시킨다. hyp = tf.nn.softmax(activation, name = "hyp") cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logis(logits=hyp, labels = y)) opt = tf.train.AdamOptimizer(learning_rate = 0.1) training = opt.minimize(cost) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for itr in range(100): _,c = sess.run([training,cost], feed_dict ={x:x_data, y :y_data}) print(itr, c) ests, inputs, gts = sess.run([hyp, x,y], ={x:x_data, y :y_data}) for input,gt,est in zip(inputs,gts,ests): print(input,gt,est)
반응형
'머신러닝 읽어주는 남자' 카테고리의 다른 글
[오직 컨셉]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 - 1] Linear regression (0) | 2018.01.24 |
[Tensorflow 101 - 인트로] 텐서플로우 시작을 위한 기초 및 기본상식 (0) | 2018.01.24 |