반응형
텐서플로우로 아주 간단한 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 |