안녕Ȣ16;세요
머신러닝 사용기 마1648;ኔ1; 강1340; 1077;니다.
1060;번 강1340;lj16; http://hunkim.github.io/ml/ 1032; 강1340;를 보고 1652;행 Ȣ16;였습니다.
소스코드lj16; http://pythonkim.tistory.com/notice/251032; 1088;료에 도움1012; 0155;았습니다.
1648;DŽ12; 번에lj16; 머신러닝1012; 통해 90% 1032; 1064;식률1012; 보였습니다.
간단한 코드/196; Ȣ17;습1060; 가능Ȣ16;다lj16; ,163;1012; 보여1456; 예1228;였lj16;데요
Ȣ17;습 모델1012; 그/140;보면 아래와 같습니다.
X(1060;0120;1648; 픽셀 1221;보)를 1077;/141; 0155;아서 1060;에 해NJ17;Ȣ16;lj16; Weight(W)와 Bias(B)를 Ȣ17;습 Ȣ16;lj16; ,163;1060;1648;요
우리가 Ȣ17;습했Nj12; 모델1008; 1060;,163;과 ᇼ1;1068;Ȣ16;1648;만 차1060;가 1080;다면
X1032; 개수가 28X28 = 784 였고, Y1032; 개수가 10 1060;었Nj12; ,163; 1077;니다.
우리가 Ȣ17;습시Ȗ16; 파라메터1032; 숫1088;lj16; W 7840개, B 10개 해서 7850개 1077;니다.
속1012; 1096; 들여다 보면 결국 선형 회귀 0169;법1032; 1025;용1060;고 Ȣ17;습 층1060; 1층에 불과합니다.
오늘1008; 1060; 층1012; 쌓아서 성능1060; 개선.104;lj16; ,163;1012; 살6196;보,192;습니다.
사실 층1012; 쌓,172; .108; 1060;유와 층1012; 쌓아서 0156;생한 문1228;1216;, 그리고 해결0169;법들에 대한 1060;야기 들1060; 1080;1648;만160;
오늘1008; ,148;너뛰고 단순7176; 층1012; 쌓고 Ȣ17;습1012; 시켜보,192;습니다.
오늘 Ȣ17;습시킬 모델1032; 모습1008; 아래와 같습니다.
보시lj16; ,163;처/100; 여러 층1004;/196; 0156;1204; 했습니다.
1473;간에 RELUlj16; Activation function 1004;/196; 1077;/141;1012; 0155;아 1060;를 활성화 할1648; 여ǥ12;를 결1221;Ȣ16;lj16; 함수 1077;니다.
수Ȣ17;1201;1004;/196;lj16; 아래와 같1008; 행/148; 연산1060; .121;니다.
층1032; 개수와 크기lj16; 원Ȣ16;lj16; 대/196; 생성 할 수가 1080;습니다.
단 행/148; 곱1012; 해야 Ȣ16;,172; ǐ12;문에 앞1032; 층1032; 출/141;과 뒤1032; 층1032; 1077;/141;1060; 같1008; 개수를 가1256;야 합니다.
1060;번 예1228;에서lj16; 1077;/141;1060; (784,256) ->(256,256)->(256,10) 1064; Ȣ17;습 층1004;/196; 해 보,192;습니다. (1077;/141;,출/141;)
1060;를 코드/196; 구현해 보면 아래와 같습니다.
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
learning_rate = 0.001
training_epochs = 15
batch_size = 100
display_step = 1
X = tf.placeholder(tf.float32, [None, 784]) # mnist data image of shape 28*28=784
Y = tf.placeholder(tf.float32, [None, 10]) 160;# 0-9 digits recognition => 10 classes
W1 = tf.Variable(tf.random_normal([784, 256]))
W2 = tf.Variable(tf.random_normal([256, 256]))
W3 = tf.Variable(tf.random_normal([256, 160;10]))
B1 = tf.Variable(tf.random_normal([256]))
B2 = tf.Variable(tf.random_normal([256]))
B3 = tf.Variable(tf.random_normal([ 10]))
L1 = tf.nn.relu(tf.add(tf.matmul(X, W1), B1))
L2 = tf.nn.relu(tf.add(tf.matmul(L1, W2), B2)) 160; 160; 160;# Hidden layer with ReLU activation
hypothesis = tf.add(tf.matmul(L2, W3), B3) 160;# No need to use softmax here
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(hypothesis, Y)) 160; # softmax loss
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
init = tf.initialize_all_variables()
with tf.Session() as sess:
160; 160; 160; 160; 160; 160;sess.run(init)
160; 160; 160; 160; 160; 160;for epoch in range(training_epochs):
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160;avg_cost = 0.
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160;total_batch = int(mnist.train.num_examples/batch_size)
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160;for i in range(total_batch):
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; batch_xs, batch_ys = mnist.train.next_batch(batch_size)
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; _, c = sess.run([optimizer, cost], feed_dict={X: batch_xs, Y: batch_ys})
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; avg_cost += c / total_batch
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160;if (epoch+1) % display_step == 0:
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(avg_cost))
160; 160; 160; 160; 160; 160;print("Optimization Finished!") 160; 160;160;
160; 160; 160; 160; 160; 160;correct_prediction = tf.equal(tf.argmax(hypothesis, 1), tf.argmax(Y, 1))
160; 160; 160; 160; 160; 160;accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
160; 160; 160; 160; 160; 160;print("Accuracy:", accuracy.eval({X: mnist.test.images, Y: mnist.test.labels}))
결과lj16; 아래와 같습니다.
94.5%1032; 1064;식률/196; 1060;1204;보다 3%1221;도 가량 향상.108; 결과를 보1077;니다.
코드를 살6196;보,192;습니다.
1077;/141;1004;/196; 들Ǻ12;오lj16; 28X281032; 공간과 출/141;1004;/196; 나가lj16; 10개1032; 공간1012; 1221;1032; 합니다.
X = tf.placeholder(tf.float32, [None, 784]) # mnist data image of shape 28*28=784
Y = tf.placeholder(tf.float32, [None, 10]) 160;# 0-9 digits recognition => 10 classes
Ȣ17;습할 Weight를 선Ǻ16;합니다. Weight1032; 숫1088;lj16; 각 층에 들Ǻ12;오lj16; 1077;/141;1032; 숫1088; X 출/141;1032; 숫1088;가 .121;니다.
W1 = tf.Variable(tf.random_normal([784, 256]))
W2 = tf.Variable(tf.random_normal([256, 256]))
W3 = tf.Variable(tf.random_normal([256, 160;10]))
Ȣ17;습할 Bias를 선Ǻ16;합니다. Weight1032; 숫1088;lj16; 각 층에서 나가lj16; 출/141;1032; 숫1088;1077;니다.
B1 = tf.Variable(tf.random_normal([256]))
B2 = tf.Variable(tf.random_normal([256]))
B3 = tf.Variable(tf.random_normal([ 10]))
각 층간1032; 관계를 1221;1032; 합니다.
L1 = X*W1+B1, L2= L1*W2+B2, hypothesis = L2*W3 +B3 1004;/196; 1221;1032; .121;니다.
L1 = tf.nn.relu(tf.add(tf.matmul(X, W1), B1))
L2 = tf.nn.relu(tf.add(tf.matmul(L1, W2), B2)) 160; 160; 160;# Hidden layer with ReLU activation
hypothesis = tf.add(tf.matmul(L2, W3), B3) 160;# No need to use softmax here
Ȣ17;습1008; 코스트 값1012; 1221;1032;Ȣ16;고 1060; 코스트 값1060; 1460;Ǻ12;드lj16; 1901;1004;/196; W,B를 변ᅆ1;시켜 나가lj16; 과1221;1077;니다.
1060;1204;에lj16; Gradient Descendent 알고리1608;1012; 사용했었lj16;데 1060;번에lj16; AdamOptimizer를 사용했습니다. 0169;법1008; 다르1648;만 Ȣ16;lj16; 1068;1008; ᇼ1;1068;합니다. 코스트가 감소Ȣ16;lj16; 0169;향1004;/196; W,B를 1312;1221;해 1452;lj16; ,163; 1077;니다.
셋ᔚ1;1012; 마치고 모든 변수값1012; 초기화 합니다.
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(hypothesis, Y)) 160; # softmax loss
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
init = tf.initialize_all_variables()
데1060;터1032; 크기가 크므/196; 데1060;터를 나누Ǻ12; 1652;행합니다.
데1060;터를 100개/196; 나누Ǻ12;서 1%1032; 데1060;터를 가1648;고 Ȣ17;습1012; 시Ȗ12;lj16; ,163;1012; 15번(training_epochs) 1652;행합니다. 위에서 설1221;한 AdamOptimizer가 0152;복1201;1004;/196; 실행.104;면서 Ȣ17;습1060; 1652;행.121;니다.
with tf.Session() as sess:
160; 160; 160; 160; 160; 160;sess.run(init)
160; 160; 160; 160; 160; 160;for epoch in range(training_epochs):
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160;avg_cost = 0.
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160;total_batch = int(mnist.train.num_examples/batch_size)
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160;for i in range(total_batch):
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; batch_xs, batch_ys = mnist.train.next_batch(batch_size)
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; _, c = sess.run([optimizer, cost], feed_dict={X: batch_xs, Y: batch_ys})
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160; avg_cost += c / total_batch
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; 160;if (epoch+1) % display_step == 0:
160; 160; 160; 160; 160; 160; 160; 160; 160; 160; print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(avg_cost))
160; 160; 160; 160; 160; 160;print("Optimization Finished!") 160; 160;160;
맞1008; 케1060;스를 세서 1221;확도를 계산합니다.
160; 160; 160; 160; 160; 160;correct_prediction = tf.equal(tf.argmax(hypothesis, 1), tf.argmax(Y, 1))
160; 160; 160; 160; 160; 160;accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
160; 160; 160; 160; 160; 160;print("Accuracy:", accuracy.eval({X: mnist.test.images, Y: mnist.test.labels}))
1060;/111;,172; Ȣ17;습 층1012; 쌓아서 1221;확도를 향상 시킬 수 1080;습니다.
7124;7176; 우리가 Deep learning1060;라고 불리lj16; ,163;1060; 1060; 0169;법1077;니다.
여기서 초기값 설1221;과 Drop out 1012; 설1221;Ȣ16;면 97% 1221;도 까1648; 1064;식률1060; 향상.104;며160;
Convolution Neural network 를 1201;용Ȣ16;면 98~99% 1032; 1064;식률1060; 나Ꮢ1;니다.
각 층1032; 연결에 따라서 여러가1648; 0169;법들1060; 1080;1004;며
아1649;도 계속해서 새/196;운 0169;법들1060; 연구 .104;고 1080;습니다.
1452;마간산처/100; deep Learning1012; 살6196; 보았네요
개1064;1201;1004;/196;lj16; 시1089;할 ǐ12;lj16; 1096; 몰랐1648;만 1312;금 살6196;보고 나니 Machine Learning1060; 그/111;,172; Ǻ12;/157;1648; 않다lj16; ,163;1012; 알 수 1080;었습니다.
우리가 1060;러한 알고리1608;1012; 1649;1217; 향상시Ȗ12;lj16; ,163;1008; 쉽1648; 않,192;1648;만 1060;/111;,172;160;
1096; 만들Ǻ12;1256; 1080;lj16; Ț12;1012; 가1648;고 우리 생활에 1201;용Ȣ16;면 1339;1008; 결과가 1080;1012; ,163;1060;라 생각합니다.
감사합니다.
½ÇÁúÀûÀ¸·Î ÀÀ¿ëÇϽô ÀÛ¾÷µµ Àß ÁøÇàµÇ´Â °ÍÀ¸·Î »ý°¢µË´Ï´Ù.
¸ñÇ¥¿¡ Á¢±ÙÇϽô °Í °°½À´Ï´Ù. ÈÀÌÆÃÀÔ´Ï´Ù.
ÀÀ¿øÇØ Áּż Á¡Á¡ ³ª¾ÆÁö°í ÀÖ¾î¿ä
°ü½ÉÀÖ°í ¹è¿ì°í ½Í¾ú´Âµ¥...
Ȥ ½ÃÁð2´Â ¾ø³ª¿ä? ¿ä·±°Å Á»´õ ÀÀ¿ëÇÏ´Â...¤¾¤¾
Àúµµ ¹è¿ì°í ÀÖ´Â ÁßÀ̾ä :)
¸¸µé°í ½ÍÀº°Ô ÀÖÀ¸½Å°¡¿ä?
³» Çൿ¹Ý°æ, ¿òÁ÷ÀÌ´Â ½Ã°£µîÀ» ¿¹ÃøÇؼ... Á¶¾ðÀ» ÇØÁÖ´Â...
°³ÀÎ ±â»óûÀ̶ó°í³ª ÇÒ±î¿ä..¤¾¤¾
°³ÀÎÀÇ À§Ä¡ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù¸é ¸¸µå¾î º¼ ¼ö Àְڳ׿ä
¾îµð¼ µéÀº°Çµ¥ µ¥ÀÌÅ͸¦ ÃæºÐÈ÷ ¸ðÀ¸¸é
ƯÁ¤½Ã°£ÀÇ »ç¶÷ÀÇ À§Ä¡¸¦ 90%Á¤µµ ¿¹Ãø °¡´ÉÇÏ´Ù°í ÇÏ´õ¶ó±¸¿ä
ÀԷ°ªÀÌ ·£´ýÀ̶ó ¾ÈµÉ°Íµµ °°Àºµ¥...
Ȥ Àΰ£ÀÇ Á÷°üÀÌ °£°ú ÇÒ ¼ö ÀÖ´Â ºÎºÐÀ»(¾ËÆÄ°í ó·³..)
ÇнÀÀ» ÅëÇØ ¹ß°ßÇÒ ¼öµµ?? ¤¾¤¾
µö·¯´×Àº ÆÐÅÏÀ» ¹ß°ßÇÏ°í ÇнÀÇÏ´Â ±â¹ýÀ̱⠶§¹®ÀÌÁÒ.
¸¸¾à ·Î¶Ç 1µî ¿¹ÃøÀ» ÇÑ´Ù¸é ... Àúµµ ¹Ù·Î ...
ÁÁÀº±Û Àß Àоú½À´Ï´Ù. ^^