{"id":928,"date":"2020-09-26T21:47:44","date_gmt":"2020-09-26T12:47:44","guid":{"rendered":"http:\/\/leenux.kr\/?p=928"},"modified":"2020-10-10T03:33:19","modified_gmt":"2020-10-09T18:33:19","slug":"tensorflow-keras-mnist-image-training","status":"publish","type":"post","link":"https:\/\/leenux.kr\/?p=928","title":{"rendered":"Tensorflow keras MNIST image of Optimization &#038; Training (beginner)"},"content":{"rendered":"\n<p style=\"text-align:center\" class=\"has-text-color has-large-font-size has-very-dark-gray-color\"><strong>Tensorflow \uacf5\uc2dd \uc0ac\uc774\ud2b8 \uc774\ubbf8\uc9c0 \ubd84\uc11d                  \ucd08\ubcf4\uc790 \uc608\uc81c <\/strong><\/p>\n\n\n\n<p><strong>\ucd08\ubcf4\uc790 \uc608\uc81c <\/strong><\/p>\n\n\n\n<p style=\"text-align:center\" class=\"has-medium-font-size\"><a href=\"https:\/\/www.tensorflow.org\/tutorials\/quickstart\/beginner\"><strong>https:\/\/www.tensorflow.org\/tutorials\/quickstart\/beginner<\/strong><\/a><\/p>\n\n\n\n<p class=\"has-text-color has-huge-font-size has-very-dark-gray-color\"><strong>\ud559\uc2b5\uacfc\uc815<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"903\" height=\"284\" src=\"https:\/\/leenux.kro.kr\/wp-content\/uploads\/2020\/09\/image-37.png\" alt=\"\" class=\"wp-image-939\" srcset=\"https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-37.png 903w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-37-300x94.png 300w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-37-768x242.png 768w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-37-830x261.png 830w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-37-230x72.png 230w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-37-350x110.png 350w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-37-480x151.png 480w\" sizes=\"(max-width: 903px) 100vw, 903px\" \/><\/figure>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong>Import tensorflow keras  layers And MNIST<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import tensorflow as tf\nfrom tensorflow.keras import layers\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom tensorflow.keras import datasets\n\n(train_x, train_y), (test_x, test_y) = datasets.mnist.load_data()<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<p class=\"has-text-color has-huge-font-size has-very-dark-gray-color\"><strong>Build Model<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"283\" src=\"https:\/\/leenux.kro.kr\/wp-content\/uploads\/2020\/09\/image-36-1024x283.png\" alt=\"\" class=\"wp-image-938\" srcset=\"https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-36-1024x283.png 1024w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-36-300x83.png 300w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-36-768x213.png 768w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-36-830x230.png 830w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-36-230x64.png 230w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-36-350x97.png 350w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/09\/image-36-480x133.png 480w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>inputs = layers.Input((28, 28, 1))\nnet = layers.Conv2D(32, (3, 3), padding='SAME')(inputs)\nnet = layers.Activation('relu')(net)\nnet = layers.Conv2D(32, (3, 3), padding='SAME')(net)\nnet = layers.Activation('relu')(net)\nnet = layers.MaxPooling2D(pool_size=(2, 2))(net)\nnet = layers.Dropout(0.25)(net)\n\nnet = layers.Conv2D(64, (3, 3), padding='SAME')(net)\nnet = layers.Activation('relu')(net)\nnet = layers.Conv2D(64, (3, 3), padding='SAME')(net)\nnet = layers.Activation('relu')(net)\nnet = layers.MaxPooling2D(pool_size=(2, 2))(net)\nnet = layers.Dropout(0.25)(net)\n\nnet = layers.Flatten()(net)\nnet = layers.Dense(512)(net)\nnet = layers.Activation('relu')(net)\nnet = layers.Dropout(0.5)(net)\nnet = layers.Dense(10)(net)  # num_classes\nnet = layers.Activation('softmax')(net)\n\nmodel = tf.keras.Model(inputs=inputs, outputs=net, name='Basic_CNN')<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<p class=\"has-text-color has-huge-font-size has-very-dark-gray-color\"><strong>Model Compile<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-very-dark-gray-color\"><strong>Loss Function<br>Optimization<br>Metrics<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-large-font-size has-very-dark-gray-color\"><strong>Optimization<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\">\ubaa8\ub378\uc744 \ud559\uc2b5\ud558\uae30 \uc804 \uc124\uc815<\/p>\n\n\n\n<ul><li><strong>Loss Function<\/strong><\/li><li><strong>Optimization<\/strong><\/li><li><strong>Metrics<\/strong><\/li><\/ul>\n\n\n\n<p class=\"has-text-color has-large-font-size has-very-dark-gray-color\"><strong>Loss Function<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong>\ud3c9\uac00\uc9c0\ud45c. \uac80\uc99d\uc14b\uacfc \uc5f0\uad00. \ud6c8\ub828 \uacfc\uc815\uc744 \ubaa8\ub2c8\ud130\ub9c1\ud558\ub294\ub370 \uc0ac\uc6a9.&nbsp;<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>loss = 'binary_crossentropy'\nloss = 'categorical_crossentropy'\n\ntf.keras.losses.sparse_categorical_crossentropy\ntf.keras.losses.categorical_crossentropy\ntf.keras.losses.binary_crossentropy<\/code><\/pre>\n\n\n\n<p class=\"has-text-color has-very-dark-gray-color\"><strong>Binary Crossentropy : 2\uac1c\uc758 \ub808\uc774\ube14 \ud074\ub798\uc2a4(0, 1\ub85c \uac00\uc815)\uac00 \uc788\uc744 \ub54c Binary Crossentropy\ub97c \uc0ac\uc6a9\ud558\uba74 \uc88b\ub2e4<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong>tf.keras.losses.sparse_categorical_crossentropy                                                                       tf.keras.losses.categorical_crossentropy<\/strong>                                                                          <\/p>\n\n\n\n<p class=\"has-text-color has-large-font-size has-very-dark-gray-color\"><strong>Metrics<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong>\ud3c9\uac00\uc9c0\ud45c \uac80\uc99d\uc14b\uacfc \uc5f0\uad00 \ud6c8\ub828 \uacfc\uc815\uc744 \ubaa8\ub2c8\ud130\ub9c1\ud558\ub294\ub370 \uc0ac\uc6a9.<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong>tf.keras.metrics.Accuracy()<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>metrics = ['accuracy']\nmetrics = tf.keras.metrics.Accuracy()<\/code><\/pre>\n\n\n\n<p class=\"has-text-color has-large-font-size has-very-dark-gray-color\"><strong>Compile<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong>Optimization<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong>\ucd5c\uc801\ud654<\/strong><\/p>\n\n\n\n<ul><li><strong>tf.keras.optimizers.RMSprop<\/strong><\/li><li><strong>tf.keras.optimizers.SGD                                                                                                                                    tf.keras.optimizers.Adam()<\/strong><\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>optm = tf.keras.optimizers.Adam()\ntf.keras.optimizers.RMSprop\ntf.keras.optimizers.SGD<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>model.compile(optimizer=optm, \n              loss=tf.keras.losses.SparseCategoricalCrossentropy(), \n              metrics= [tf.keras.metrics.SparseCategoricalAccuracy()])<\/code><\/pre>\n\n\n\n<p class=\"has-text-color has-large-font-size has-very-dark-gray-color\"><strong>Prepare Dataset<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong> \ud559\uc2b5\uc5d0 \uc0ac\uc6a9\ud560 \ub370\uc774\ud130\uc14b \uc900\ube44 <\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>train_x.shape #\ucc28\uc6d0\uc218 \ud655\uc778\ntest_x.shape # \ucc28\uc6d0\uc218 \ud655\uc778\ntrain_x = train_x[..., tf.newaxis] # \ucc28\uc6d0\uc218 \uc99d\uac00\ntest_x = test_x[..., tf.newaxis] # \ucc28\uc6d0\uc218 \uc99d\uac00 \n\n# Rescaling\ntrain_x = train_x \/ 255\ntest_x = test_x \/ 255<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<p class=\"has-text-color has-huge-font-size has-very-dark-gray-color\"><strong>Training<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong>\ud559\uc2b5 \uc2dc\uc791<\/strong><\/p>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong>epochs : \ud559\uc2b5 \ud69f\uc218<br>batch : \ucef4\ud4e8\ud130 \uc790\uc6d0 \ud6a8\uc728\uc744 \uc704\ud574 n\uac1c\uc529 \ud559\uc2b5  <\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>num_epochs = 1\nbatch_size = 16\n\ntrain_x = tf.cast(train_x,dtype=tf.float32)\ntrain_y = tf.cast(train_y,dtype=tf.float32)\n\nhist = model.fit(train_x, train_y, \n                 batch_size=batch_size, \n                 shuffle=True, \n                 epochs=num_epochs) <\/code><\/pre>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong>Model Fit \uc2e4\ud589\uc911 Value \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\ub2e4\uba74 \ucc38\uace0\uc790\ub8cc<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-leenux\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"LMliHtkSSd\"><a href=\"https:\/\/leenux.kro.kr\/index.php\/2020\/09\/27\/mnist-valueerror-shapes-32-10-and-32-1-are-incompatible-resolution\/\">MNIST &#8211; ValueError: Shapes (32, 10) and (32, 1) are incompatible Resolution<\/a><\/blockquote><iframe title=\"&#8220;MNIST &#8211; ValueError: Shapes (32, 10) and (32, 1) are incompatible Resolution&#8221; &#8212; Leenux\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" src=\"https:\/\/leenux.kro.kr\/index.php\/2020\/09\/27\/mnist-valueerror-shapes-32-10-and-32-1-are-incompatible-resolution\/embed\/#?secret=LMliHtkSSd\" data-secret=\"LMliHtkSSd\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-very-dark-gray-color\"><strong>\ud559\uc2b5 \ud655\uc778<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hist.history<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" src=\"https:\/\/leenux.kro.kr\/wp-content\/uploads\/2020\/10\/image-5.png\" alt=\"\" class=\"wp-image-1031\" width=\"743\" height=\"153\" srcset=\"https:\/\/leenux.kr\/wp-content\/uploads\/2020\/10\/image-5.png 446w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/10\/image-5-300x62.png 300w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/10\/image-5-230x47.png 230w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/10\/image-5-350x72.png 350w\" sizes=\"(max-width: 743px) 100vw, 743px\" \/><\/figure>\n\n\n\n<h1><strong>Check History<\/strong><\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>predictModel = model.predict(train_x)\npredictModel<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"610\" height=\"320\" src=\"https:\/\/leenux.kro.kr\/wp-content\/uploads\/2020\/10\/image-4.png\" alt=\"\" class=\"wp-image-1029\" srcset=\"https:\/\/leenux.kr\/wp-content\/uploads\/2020\/10\/image-4.png 610w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/10\/image-4-300x157.png 300w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/10\/image-4-230x121.png 230w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/10\/image-4-350x184.png 350w, https:\/\/leenux.kr\/wp-content\/uploads\/2020\/10\/image-4-480x252.png 480w\" sizes=\"(max-width: 610px) 100vw, 610px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Tensorflow \uacf5\uc2dd \uc0ac\uc774\ud2b8 \uc774\ubbf8\uc9c0 \ubd84\uc11d \ucd08\ubcf4\uc790 \uc608\uc81c \ucd08\ubcf4\uc790 \uc608\uc81c https:\/\/www.tensorflow.org\/tutorials\/quickstart\/beginner \ud559\uc2b5\uacfc\uc815 Import [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":883,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[24],"tags":[],"_links":{"self":[{"href":"https:\/\/leenux.kr\/index.php?rest_route=\/wp\/v2\/posts\/928"}],"collection":[{"href":"https:\/\/leenux.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/leenux.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/leenux.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/leenux.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=928"}],"version-history":[{"count":15,"href":"https:\/\/leenux.kr\/index.php?rest_route=\/wp\/v2\/posts\/928\/revisions"}],"predecessor-version":[{"id":1032,"href":"https:\/\/leenux.kr\/index.php?rest_route=\/wp\/v2\/posts\/928\/revisions\/1032"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/leenux.kr\/index.php?rest_route=\/wp\/v2\/media\/883"}],"wp:attachment":[{"href":"https:\/\/leenux.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/leenux.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/leenux.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}