¸Ó½Å·¯´×(Tensorflow) »ç¿ë±â 5 ( Deep MNIST for Experts)

   Á¶È¸ 23285   Ãßõ 6    

안녕Ȣ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;만 

오늘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;를 결122116;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])  # 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,  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))      # Hidden layer with ReLU activation

hypothesis = tf.add(tf.matmul(L2, W3), B3)  # No need to use softmax here

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(hypothesis, Y))   # softmax loss

optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)

init = tf.initialize_all_variables()

with tf.Session() as sess:

           sess.run(init)

           for epoch in range(training_epochs):

                     avg_cost = 0.

                     total_batch = int(mnist.train.num_examples/batch_size)

                     for i in range(total_batch):

                                batch_xs, batch_ys = mnist.train.next_batch(batch_size)

                                _, c = sess.run([optimizer, cost], feed_dict={X: batch_xs, Y: batch_ys})

                                avg_cost += c / total_batch

                     if (epoch+1) % display_step == 0:

                    print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(avg_cost))

           print("Optimization Finished!")     

           correct_prediction = tf.equal(tf.argmax(hypothesis, 1), tf.argmax(Y, 1))

           accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

           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])  # 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,  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))      # Hidden layer with ReLU activation

hypothesis = tf.add(tf.matmul(L2, W3), B3)  # 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))   # 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:

           sess.run(init)

           for epoch in range(training_epochs):

                     avg_cost = 0.

                     total_batch = int(mnist.train.num_examples/batch_size)

                     for i in range(total_batch):

                                batch_xs, batch_ys = mnist.train.next_batch(batch_size)

                                _, c = sess.run([optimizer, cost], feed_dict={X: batch_xs, Y: batch_ys})

                                avg_cost += c / total_batch

                     if (epoch+1) % display_step == 0:

                    print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(avg_cost))

           print("Optimization Finished!")     


맞1008; 케1060;스를 세서 1221;확도를 계산합니다.

           correct_prediction = tf.equal(tf.argmax(hypothesis, 1), tf.argmax(Y, 1))

           accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

           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; 설122116;면 97% 1221;도 까1648; 1064;식률1060; 향상.104;며 

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; 

1096; 만들Ǻ12;1256; 1080;lj16; Ț12;1012; 가1648;고 우리 생활에 1201;용Ȣ16;면 1339;1008; 결과가 1080;1012; ,163;1060;라 생각합니다.


감사합니다.

elkiselee 2016-08
¿Ö ÀÌ·±°É º¸°íÀÖÀ¸¸é ½ÉÀåÀÌ ¶Û±î¿ä ¤»¤» Àü°ø ¹Ù²Ù¶ó´Â ¸»Àΰ¡¿ä
     
nshhsn 2016-08
ÁøÂ¥ ÀÌ°Å ³Ê¹« Àç¹ÌÀÖ¾î¿ä
Á¤¸» ÈǸ¢ÇϽʴϴÙ. Á¡Á¡ ¾î·Á¿öÁö´Â °Í °°½À´Ï´Ù.
½ÇÁúÀûÀ¸·Î ÀÀ¿ëÇϽô ÀÛ¾÷µµ Àß ÁøÇàµÇ´Â °ÍÀ¸·Î »ý°¢µË´Ï´Ù.
¸ñÇ¥¿¡ Á¢±ÙÇϽô °Í °°½À´Ï´Ù. È­ÀÌÆÃÀÔ´Ï´Ù.
     
nshhsn 2016-08
°¨»çÇÕ´Ï´Ù :)
ÀÀ¿øÇØ Áּż­ Á¡Á¡ ³ª¾ÆÁö°í ÀÖ¾î¿ä
stones 2016-08
°¨»çÇÕ´Ï´Ù.. ÀÌÇØ´Â ´Ù ¸øÇÏÁö¸¸..
°ü½ÉÀÖ°í ¹è¿ì°í ½Í¾ú´Âµ¥...
Ȥ ½ÃÁð2´Â ¾ø³ª¿ä? ¿ä·±°Å Á»´õ ÀÀ¿ëÇÏ´Â...¤¾¤¾
     
nshhsn 2016-08
½ÃÁð 2´Â ¾øÀ»°Í °°¾Æ¿ä
Àúµµ ¹è¿ì°í ÀÖ´Â ÁßÀ̾¿ä :)
¸¸µé°í ½ÍÀº°Ô ÀÖÀ¸½Å°¡¿ä?
          
stones 2016-08
³ª¿¡°Ô ÃÖÀûÈ­µÈ... ³¯¾¾ ¿¹Ãø ½Ã½ºÅÛÀº ¾î¶³·±Áö¿ä?
³» Çൿ¹Ý°æ, ¿òÁ÷ÀÌ´Â ½Ã°£µîÀ» ¿¹ÃøÇؼ­... Á¶¾ðÀ» ÇØÁÖ´Â...
°³ÀÎ ±â»óûÀ̶ó°í³ª ÇÒ±î¿ä..¤¾¤¾
               
nshhsn 2016-08
±×·± ÀÀ¿ëµµ °¡´ÉÇÏ°Ú±º¿ä
°³ÀÎÀÇ À§Ä¡ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù¸é ¸¸µå¾î º¼ ¼ö Àְڳ׿ä

¾îµð¼­ µéÀº°Çµ¥ µ¥ÀÌÅ͸¦ ÃæºÐÈ÷ ¸ðÀ¸¸é
ƯÁ¤½Ã°£ÀÇ »ç¶÷ÀÇ À§Ä¡¸¦ 90%Á¤µµ ¿¹Ãø °¡´ÉÇÏ´Ù°í ÇÏ´õ¶ó±¸¿ä
                    
stones 2016-09
·Î¶Çó·³ ±âÁ¸ 1µî µ¥ÀÌÅÍ·Î Ãß·Ð ¿¹Ãøµµ °¡´ÉÇÒ±î¿ä?
ÀԷ°ªÀÌ ·£´ýÀ̶ó ¾ÈµÉ°Íµµ °°Àºµ¥...
Ȥ Àΰ£ÀÇ Á÷°üÀÌ °£°ú ÇÒ ¼ö ÀÖ´Â ºÎºÐÀ»(¾ËÆÄ°í ó·³..)
ÇнÀÀ» ÅëÇØ ¹ß°ßÇÒ ¼öµµ?? ¤¾¤¾
                         
PAMA¸Ó¸® 2016-10
1µî µ¥ÀÌÅÍ Ãß·ÐÀº Èûµé °ÍÀ¸·Î º¸ÀÔ´Ï´Ù.
µö·¯´×Àº ÆÐÅÏÀ» ¹ß°ßÇÏ°í ÇнÀÇÏ´Â ±â¹ýÀ̱⠶§¹®ÀÌÁÒ.

¸¸¾à ·Î¶Ç 1µî ¿¹ÃøÀ» ÇÑ´Ù¸é ... Àúµµ ¹Ù·Î ...
À̹æÀÎ 2016-08
Àç¹ÌÀÖ°Ô Àß ºÃ½À´Ï´Ù.
     
nshhsn 2016-09
°¨»çÇÕ´Ï´Ù.
falcon 2016-09
¿äÁò º¸¾ÈºÐ¾ß¿¡¼­µµ ML±â¼úÀ» Àû¿ëÇÑ Á¦Ç°µéÀÌ ³ª¿À°í À־ ±â´ë¸¦ ÇÏ°í ÀÖ½À´Ï´Ù.
ÁÁÀº±Û Àß Àоú½À´Ï´Ù. ^^
Á¤¸» ¸ÚÁø °­ÀÇ Àßµé¾ú½À´Ï´Ù!


Á¦¸ñPage 1/26
2015-07   17772   nightly
2016-10   14811   stone92±è°æ¹Î
2019-01   10698   ȸ¿øK
2019-06   18948   Á¦¿ÂÇÁ·Î
2020-02   6462   ±èÁØ¿¬
2020-07   10832   ÇÁ·Î½Ã¾Æ
2021-03   12752   ¹Ú¹®Çü
2021-07   11843   µö·¯´×¼­¹ö
2021-12   6255   µö·¯´×¼­¹ö
2022-05   30556   µö·¯´×¼­¹ö
2022-11   46165   ocarina
2023-07   54171   µö·¯´×¼­¹ö
2023-12   6508   µö·¯´×¼­¹ö
2010-10   23753   theÃ̳ð
2017-04   15334   ¾ÈÇü°ï
2018-06   21751   TLaJ3KtYGr
2019-06   14755   ±èÁØ¿¬
2020-02   10438   ½Å¿µÁø
2021-03   13210   µö·¯´×¼­¹ö
2021-07   9191   µö·¯´×¼­¹ö