{"id":8534,"date":"2019-11-16T21:23:03","date_gmt":"2019-11-16T12:23:03","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=8534"},"modified":"2020-05-28T09:54:43","modified_gmt":"2020-05-28T00:54:43","slug":"%ed%85%90%ec%84%9c%ed%94%8c%eb%a1%9c2-mnist-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%a5%bc-%ed%9b%88%eb%a0%a8-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%a1%9c-%ec%82%ac%ec%9a%a9%ed%95%9c-dnn-%ed%95%99%ec%8a%b5","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=8534","title":{"rendered":"[\ud150\uc11c\ud50c\ub85c2] MNIST \ub370\uc774\ud130\ub97c \ud6c8\ub828 \ub370\uc774\ud130\ub85c \uc0ac\uc6a9\ud55c DNN \ud559\uc2b5"},"content":{"rendered":"<p>TensorFlow 2\uc5d0\uc11c \uc190\uae00\uc528\ub85c \uc791\uc131\ud574 \uc2a4\uce94\ud55c MNIST \ub370\uc774\ud130\ub97c DNN \ubaa8\ub378 \ud559\uc2b5\uc744 \ud1b5\ud574 \ubd84\ub958\ud558\ub294 \ucf54\ub4dc\ub97c \uc815\ub9ac\ud574 \ubd05\ub2c8\ub2e4.<\/p>\n<p>\uba3c\uc800 \uc544\ub798\ucc98\ub7fc \ud150\uc11c\ud50c\ub85c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc784\ud3ec\ud2b8 \ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport tensorflow as tf\r\n<\/pre>\n<p>\ud150\uc11c\ud50c\ub85c\uc640 \ucf00\ub77c\uc2a4\uac00 \ub9e4\uc6b0 \ubc00\uc811\ud558\uac8c \ud1b5\ud569\ub418\uc5c8\uace0, \ub2e4\uc591\ud55c \ub370\uc774\ud130\uc14b\uc774 \ucf00\ub77c\uc2a4 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud1b5\ud574 \ud65c\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ub798\uc758 \ucf54\ub4dc\ub97c \ud1b5\ud574 MNIST \ub370\uc774\ud130\uc14b\uc744 \uc778\ud130\ub137\uc744 \ud1b5\ud574 \uac00\uc838\uc635\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\n(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()\r\nx_train, x_test = x_train \/ 255.0, x_test \/ 255.0\r\n<\/pre>\n<p>x_train\uc5d0\ub294 \ucd1d 60000\uac1c\uc758 28&#215;28 \ud06c\uae30\uc758 \uc774\ubbf8\uc9c0\uac00 \ub2f4\uaca8 \uc788\uc73c\uba70, y_train\uc5d0\ub294 \uc774 x_train\uc758 60000\uac1c\uc5d0 \ub300\ud55c \uac12(0~9)\uc774 \ub2f4\uaca8 \uc788\ub294 \ub808\uc774\ube14 \ub370\uc774\ud130\uc14b\uc785\ub2c8\ub2e4. \uadf8\ub9ac\uace0  x_train\uacfc y_train\uc740 \uac01\uac01 10000\uac1c\uc758 \uc774\ubbf8\uc9c0\uc640 \ub808\uc774\ube14 \ub370\uc774\ud130\uc14b\uc785\ub2c8\ub2e4. \uba3c\uc800 x_train\uc640 y_train\uc744 \ud1b5\ud574 \ubaa8\ub378\uc744 \ud559\uc2b5\ud558\uace0 \ub09c \ub4a4\uc5d0, x_test, y_test \ub97c \uc774\uc6a9\ud574 \ud559\uc2b5\ub41c \ubaa8\ub378\uc758 \uc815\ud655\ub3c4\ub97c \ud3c9\uac00\ud558\uac8c \ub429\ub2c8\ub2e4. \ub2e4\uc74c \ucf54\ub4dc\ub294 \uc2e0\uacbd\ub9dd \ubaa8\ub378\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nmodel = tf.keras.models.Sequential([\r\n    tf.keras.layers.Flatten(input_shape=(28, 28)),\r\n    tf.keras.layers.Dense(128, activation='relu'),\r\n    tf.keras.layers.Dropout(0.2),\r\n    tf.keras.layers.Dense(10, activation='softmax')\r\n])\r\n<\/pre>\n<p>\ucd1d 4\uac1c\uc758 \ub808\uc774\uc5b4\ub85c \uad6c\uc131\ub41c \uc2e0\uacbd\ub9dd\uc778\ub370, 1\ubc88\uc9f8 \ub808\uc774\uc5b4\ub294 \uc785\ub825 \uc774\ubbf8\uc9c0\uc758 \ud06c\uae30\uac00 28&#215;28\uc774\ubbc0\ub85c \uc774\ub97c 1\ucc28\uc6d0 \ud150\uc11c\ub85c \ud3bc\uce58\ub294 \uac83\uc774\uace0, 2\ubc88\uc9f8 \ub808\uc774\uc5b4\ub294 1\ubc88\uc9f8 \ub808\uc774\uc5b4\uc5d0\uc11c \uc81c\uacf5\ub418\ub294 784 \uac1c\uc758 \uac12(28&#215;28)\uc744 \uc785\ub825\ubc1b\uc544 128\uac1c\uc758 \uac12\uc73c\ub85c \uc778\ucf54\ub529\ud574 \uc8fc\ub294\ub370, \ud65c\uc131\ud568\uc218\ub85c ReLU\ub97c \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud558\uc600\uc2b5\ub2c8\ub2e4. 2\ubc88\uc9f8 \ub808\uc774\uc5b4\uc758 \uc2e4\uc81c \uc5f0\uc0b0\uc740 1\ubc88\uc9f8 \ub808\uc774\uc5b4\uc5d0\uc11c \uc81c\uacf5\ubc1b\uc740 784\uac1c\uc758 \uac12\uc744 784&#215;128 \ud589\ub82c\uacfc \uacf1\ud558\uace0 \ud3b8\ud5a5\uac12\uc744 \ub354\ud558\uc5ec \uc5bb\uc740 128\uac1c\uc758 \ucd9c\ub825\uac12\uc744 \ub2e4\uc2dc ReLU \ud568\uc218\uc5d0 \uc785\ub825\ud574 \uc5bb\uc740 128\uac1c\uc758 \ucd9c\ub825\uc785\ub2c8\ub2e4. 3\ubc88\uc9f8\ub294 128\uac1c\uc758 \ub274\ub7f0 \uc911 \ubb34\uc791\uc704\ub85c 0.2\uac00 \uc758\ubbf8\ud558\ub294 20%\ub97c \ub2e4\uc74c \ub808\uc774\uc5b4\uc758 \uc785\ub825\uc5d0\uc11c \ubb34\uc2dc\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c 20% \uc815\ub3c4\uac00 \ubb34\uc2dc\ub41c \uac12\uc774 4\ubc88\uc9f8 \ub808\uc774\uc5b4\uc5d0 \uc785\ub825\ub418\uc5b4 \ucda9 10\uac1c\uc758 \uac12\uc744 \ucd9c\ub825\ud558\ub294\ub370, \uc5ec\uae30\uc11c \uc0ac\uc6a9\ub418\ub294 \ud65c\uc131\ud654 \ud568\uc218\ub294 Softmax\uac00 \uc0ac\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4. Softmax\ub294 \ub9c8\uc9c0\ub9c9 \ub808\uc774\uc5b4\uc758 \uacb0\uacfc\uac12\uc744 \ub2e4\uc911\ubd84\ub958\ub97c \uc704\ud55c \ud655\ub960\uac12\uc73c\ub85c \ud574\uc11d\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\uae30 \uc704\ud568\uc785\ub2c8\ub2e4. 10\uac1c\uc758 \uac12\uc744 \ucd9c\ub825\ud558\ub294 \uc774\uc720\ub294 \uc785\ub825 \uc774\ubbf8\uc9c0\uac00 0~9\uae4c\uc9c0\uc758 \uc5b4\ub5a4 \uc22b\uc790\ub97c \uc758\ubbf8\ud558\ub294\uc9c0\uc5d0 \ub300\ud55c \uac01\uac01\uc758 \ud655\ub960\uc744 \uc5bb\uace0\uc790 \ud568\uc785\ub2c8\ub2e4. \uc774\ub807\uac8c \uc815\uc758\ub41c \ubaa8\ub378\uc744 \ud559\uc2b5\ud558\uae30\uc5d0 \uc55e\uc11c \ub2e4\uc74c\ucc98\ub7fc \ucef4\ud30c\uc77c\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nmodel.compile(optimizer='adam',\r\n              loss='sparse_categorical_crossentropy',\r\n              metrics=['accuracy'])\r\n<\/pre>\n<p>\ubaa8\ub378\uc758 \ud559\uc2b5 \uc911\uc5d0 \uc5ed\uc804\ud30c\ub97c \ud1b5\ud55c \uac00\uc911\uce58 \ucd5c\uc801\ud654\ub97c \uc704\ud55c \uae30\uc6b8\uae30 \ubc29\ud5a5\uc5d0 \ub300\ud55c \uacbd\uc0ac\ud558\uac15\uc744 \uc704\ud55c \ubc29\ubc95\uc73c\ub85c Adam\uc744 \uc0ac\uc6a9\ud588\uc73c\uba70 \uc190\uc2e4\ud568\uc218\ub85c \ub2e4\uc911 \ubd84\ub958\uc758 Cross Entropy Error\uc778 &#8216;sparse_categorical_crossentropy&#8217;\ub97c \uc9c0\uc815\ud558\uc600\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \ubaa8\ub378 \ud3c9\uac00\ub97c \uc704\ud55c \ud3c9\uac00 \uc9c0\ud45c\ub85c &#8216;accuracy&#8217;\ub97c \uc9c0\uc815\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc774\uc81c \ub2e4\uc74c\ucc98\ub7fc \ubaa8\ub378\uc744 \ud559\uc2b5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nmodel.fit(x_train, y_train, epochs=5)\r\n<\/pre>\n<p>\ud559\uc2b5\uc5d0 \uc0ac\uc6a9\ub418\ub294 \ub370\uc774\ud130\ub137\uacfc \ud559\uc2b5 \ubc18\ubcf5\uc218\ub85c 5 Epoch\uc744 \uc9c0\uc815\ud588\uc2b5\ub2c8\ub2e4. Epoch\uc740 \uc804\uccb4 \ub370\uc774\ud130\uc14b\uc5d0 \ub300\ud574\uc11c \ud55c\ubc88 \ud559\uc2b5\ud560\ub54c\uc758 \ub2e8\uc704\uc785\ub2c8\ub2e4. \ud559\uc2b5\uc774 \uc644\ub8cc\ub418\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ub0b4\uc6a9\uc774 \ucd9c\ub825\ub429\ub2c8\ub2e4.<\/p>\n<div style='background:black;color:white;padding:7px;margin:0 24px'>\nTrain on 60000 samples<br \/>\nEpoch 1\/5<br \/>\n2019-11-16 21:24:27.115767: I tensorflow\/stream_executor\/platform\/default\/dso_loader.cc:44] Successfully opened dynamic library cublas64_100.dll<br \/>\n60000\/60000 [==============================] &#8211; 6s 103us\/sample &#8211; loss: 0.2971 &#8211; accuracy: 0.9137<br \/>\nEpoch 2\/5<br \/>\n60000\/60000 [==============================] &#8211; 5s 78us\/sample &#8211; loss: 0.1428 &#8211; accuracy: 0.9577<br \/>\nEpoch 3\/5<br \/>\n60000\/60000 [==============================] &#8211; 5s 79us\/sample &#8211; loss: 0.1074 &#8211; accuracy: 0.9676<br \/>\nEpoch 4\/5<br \/>\n60000\/60000 [==============================] &#8211; 5s 80us\/sample &#8211; loss: 0.0846 &#8211; accuracy: 0.9742<br \/>\nEpoch 5\/5<br \/>\n60000\/60000 [==============================] &#8211; 5s 80us\/sample &#8211; loss: 0.0748 &#8211; accuracy: 0.9766\n<\/div>\n<p><\/p>\n<p>\ub2e4\uc74c \ucf54\ub4dc\ub85c \ubaa8\ub378\uc744 \ud3c9\uac00\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nmodel.evaluate(x_test,  y_test, verbose=2)\r\n<\/pre>\n<p>\ud3c9\uac00\ub97c \uc704\ud55c \ub370\uc774\ud130\uc14b\uc744 \uc9c0\uc815\ud558\uace0, \ud3c9\uac00\uac00 \ub05d\ub098\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ud3c9\uac00 \ub370\uc774\ud130\uc14b\uc5d0 \ub300\ud55c \uc190\uc2e4\uac12\uacfc \uc815\ud655\ub3c4\uac00 \uacb0\uacfc\ub85c \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<div style='background:black;color:white;padding:7px;margin:0 24px'>\n10000\/1 &#8211; 1s &#8211; loss: 0.0409 &#8211; accuracy: 0.9778\n<\/div>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TensorFlow 2\uc5d0\uc11c \uc190\uae00\uc528\ub85c \uc791\uc131\ud574 \uc2a4\uce94\ud55c MNIST \ub370\uc774\ud130\ub97c DNN \ubaa8\ub378 \ud559\uc2b5\uc744 \ud1b5\ud574 \ubd84\ub958\ud558\ub294 \ucf54\ub4dc\ub97c \uc815\ub9ac\ud574 \ubd05\ub2c8\ub2e4. \uba3c\uc800 \uc544\ub798\ucc98\ub7fc \ud150\uc11c\ud50c\ub85c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc784\ud3ec\ud2b8 \ud574\uc57c \ud569\ub2c8\ub2e4. import tensorflow as tf \ud150\uc11c\ud50c\ub85c\uc640 \ucf00\ub77c\uc2a4\uac00 \ub9e4\uc6b0 \ubc00\uc811\ud558\uac8c \ud1b5\ud569\ub418\uc5c8\uace0, \ub2e4\uc591\ud55c \ub370\uc774\ud130\uc14b\uc774 \ucf00\ub77c\uc2a4 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud1b5\ud574 \ud65c\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ub798\uc758 \ucf54\ub4dc\ub97c \ud1b5\ud574 MNIST \ub370\uc774\ud130\uc14b\uc744 \uc778\ud130\ub137\uc744 \ud1b5\ud574 \uac00\uc838\uc635\ub2c8\ub2e4. (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() x_train, x_test &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=8534\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;[\ud150\uc11c\ud50c\ub85c2] MNIST \ub370\uc774\ud130\ub97c \ud6c8\ub828 \ub370\uc774\ud130\ub85c \uc0ac\uc6a9\ud55c DNN \ud559\uc2b5&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[131,132],"tags":[],"class_list":["post-8534","post","type-post","status-publish","format-standard","hentry","category-python","category-deep-machine-learning"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8534"}],"version-history":[{"count":7,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8534\/revisions"}],"predecessor-version":[{"id":8538,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8534\/revisions\/8538"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8534"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}