From 3ae60bc7c93a02d5ed156e895f971e60e64fa5cf Mon Sep 17 00:00:00 2001 From: rickiepark Date: Sun, 20 May 2018 23:09:27 +0900 Subject: [PATCH] =?UTF-8?q?Keras=20mnist=20dataset=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...uction_to_artificial_neural_networks.ipynb | 4 +- 13_convolutional_neural_networks.ipynb | 80 ++++++++---- 14_recurrent_neural_networks.ipynb | 66 +++++++--- 15_autoencoders.ipynb | 123 +++++++++++------- 4 files changed, 186 insertions(+), 87 deletions(-) diff --git a/10_introduction_to_artificial_neural_networks.ipynb b/10_introduction_to_artificial_neural_networks.ipynb index b221e34..7d3e073 100644 --- a/10_introduction_to_artificial_neural_networks.ipynb +++ b/10_introduction_to_artificial_neural_networks.ipynb @@ -2038,8 +2038,8 @@ "metadata": {}, "outputs": [], "source": [ - "X_valid = mnist.validation.images\n", - "y_valid = mnist.validation.labels" + "# X_valid = mnist.validation.images\n", + "# y_valid = mnist.validation.labels" ] }, { diff --git a/13_convolutional_neural_networks.ipynb b/13_convolutional_neural_networks.ipynb index 126496c..78152fe 100644 --- a/13_convolutional_neural_networks.ipynb +++ b/13_convolutional_neural_networks.ipynb @@ -717,6 +717,42 @@ " saver = tf.train.Saver()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "주의: `tf.examples.tutorials.mnist`은 삭제될 예정이므로 대신 `tf.keras.datasets.mnist`를 사용하겠습니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()\n", + "X_train = X_train.astype(np.float32).reshape(-1, 28*28) / 255.0\n", + "X_test = X_test.astype(np.float32).reshape(-1, 28*28) / 255.0\n", + "y_train = y_train.astype(np.int32)\n", + "y_test = y_test.astype(np.int32)\n", + "X_valid, X_train = X_train[:5000], X_train[5000:]\n", + "y_valid, y_train = y_train[:5000], y_train[5000:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def shuffle_batch(X, y, batch_size):\n", + " rnd_idx = np.random.permutation(len(X))\n", + " n_batches = len(X) // batch_size\n", + " for batch_idx in np.array_split(rnd_idx, n_batches):\n", + " X_batch, y_batch = X[batch_idx], y[batch_idx]\n", + " yield X_batch, y_batch" + ] + }, { "cell_type": "code", "execution_count": 23, @@ -734,10 +770,8 @@ } ], "source": [ - "from tensorflow.examples.tutorials.mnist import input_data\n", - "tf.logging.set_verbosity(tf.logging.ERROR) # deprecated 경고 메세지를 출력하지 않기 위해 \n", - "mnist = input_data.read_data_sets(\"/tmp/data/\")\n", - "tf.logging.set_verbosity(tf.logging.INFO)" + "# from tensorflow.examples.tutorials.mnist import input_data\n", + "# mnist = input_data.read_data_sets(\"/tmp/data/\")" ] }, { @@ -772,15 +806,14 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " for iteration in range(mnist.train.num_examples // batch_size):\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n", " sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n", - " acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", - " acc_val = accuracy.eval(feed_dict={X: mnist.validation.images, y: mnist.validation.labels})\n", - " print(epoch, \"훈련 정확도:\", acc_train, \"검증 세트 정확도:\", acc_val)\n", + " acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", + " acc_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n", + " print(epoch, \"배치 데이터 정확도:\", acc_batch, \"검증 세트 정확도:\", acc_val)\n", "\n", - " acc_test = accuracy.eval(feed_dict={X: mnist.test.images,\n", - " y: mnist.test.labels})\n", + " acc_test = accuracy.eval(feed_dict={X: X_test,\n", + " y: y_test})\n", " print(\"테스트 세트에서 최종 정확도:\", acc_test)\n", " \n", " save_path = saver.save(sess, \"./my_mnist_model\")" @@ -922,8 +955,8 @@ } ], "source": [ - "from tensorflow.examples.tutorials.mnist import input_data\n", - "mnist = input_data.read_data_sets(\"/tmp/data/\")" + "# from tensorflow.examples.tutorials.mnist import input_data\n", + "# mnist = input_data.read_data_sets(\"/tmp/data/\")" ] }, { @@ -1005,23 +1038,20 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " for iteration in range(mnist.train.num_examples // batch_size):\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n", " sess.run(training_op, feed_dict={X: X_batch, y: y_batch, training: True})\n", " if iteration % check_interval == 0:\n", - " loss_val = loss.eval(feed_dict={X: mnist.validation.images,\n", - " y: mnist.validation.labels})\n", + " loss_val = loss.eval(feed_dict={X: X_valid, y: y_valid})\n", " if loss_val < best_loss_val:\n", " best_loss_val = loss_val\n", " checks_since_last_progress = 0\n", " best_model_params = get_model_params()\n", " else:\n", " checks_since_last_progress += 1\n", - " acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", - " acc_val = accuracy.eval(feed_dict={X: mnist.validation.images,\n", - " y: mnist.validation.labels})\n", - " print(\"에포크 {}, 훈련 정확도: {:.4f}%, 검증 세트 정확도: {:.4f}%, 검증 세트에서 최선의 손실: {:.6f}\".format(\n", - " epoch, acc_train * 100, acc_val * 100, best_loss_val))\n", + " acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", + " acc_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n", + " print(\"에포크 {}, 배치 데이터 정확도: {:.4f}%, 검증 세트 정확도: {:.4f}%, 검증 세트에서 최선의 손실: {:.6f}\".format(\n", + " epoch, acc_batch * 100, acc_val * 100, best_loss_val))\n", " if checks_since_last_progress > max_checks_without_progress:\n", " print(\"조기 종료!\")\n", " break\n", @@ -1029,8 +1059,8 @@ " if best_model_params:\n", " restore_model_params(best_model_params)\n", " # GPU 메모리가 부족해서 5000개만 평가했습니다. CPU를 사용하거나 GPU 메모리가 크다면 테스트 세트 전체를 평가해 보세요.\n", - " acc_test = accuracy.eval(feed_dict={X: mnist.test.images[:5000],\n", - " y: mnist.test.labels[:5000]})\n", + " acc_test = accuracy.eval(feed_dict={X: X_test[:5000],\n", + " y: y_test[:5000]})\n", " print(\"테스트 세트에서 최종 정확도:\", acc_test)\n", " save_path = saver.save(sess, \"./my_mnist_model\")" ] @@ -2607,7 +2637,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.5" + "version": "3.6.5" }, "nav_menu": {}, "toc": { diff --git a/14_recurrent_neural_networks.ipynb b/14_recurrent_neural_networks.ipynb index c023e2c..0ebc51e 100644 --- a/14_recurrent_neural_networks.ipynb +++ b/14_recurrent_neural_networks.ipynb @@ -741,6 +741,43 @@ "init = tf.global_variables_initializer()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "주의: `tf.examples.tutorials.mnist`은 삭제될 예정이므로 대신 `tf.keras.datasets.mnist`를 사용하겠습니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()\n", + "X_train = X_train.astype(np.float32).reshape(-1, 28*28) / 255.0\n", + "X_test = X_test.astype(np.float32).reshape(-1, 28*28) / 255.0\n", + "y_train = y_train.astype(np.int32)\n", + "X_test = mnist.test.images.reshape((-1, n_steps, n_inputs))\n", + "y_test = y_test.astype(np.int32)\n", + "X_valid, X_train = X_train[:5000], X_train[5000:]\n", + "y_valid, y_train = y_train[:5000], y_train[5000:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def shuffle_batch(X, y, batch_size):\n", + " rnd_idx = np.random.permutation(len(X))\n", + " n_batches = len(X) // batch_size\n", + " for batch_idx in np.array_split(rnd_idx, n_batches):\n", + " X_batch, y_batch = X[batch_idx], y[batch_idx]\n", + " yield X_batch, y_batch" + ] + }, { "cell_type": "code", "execution_count": 36, @@ -773,10 +810,10 @@ } ], "source": [ - "from tensorflow.examples.tutorials.mnist import input_data\n", - "mnist = input_data.read_data_sets(\"/tmp/data/\")\n", - "X_test = mnist.test.images.reshape((-1, n_steps, n_inputs))\n", - "y_test = mnist.test.labels" + "# from tensorflow.examples.tutorials.mnist import input_data\n", + "# mnist = input_data.read_data_sets(\"/tmp/data/\")\n", + "# X_test = mnist.test.images.reshape((-1, n_steps, n_inputs))\n", + "# y_test = mnist.test.labels" ] }, { @@ -898,13 +935,12 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " for iteration in range(mnist.train.num_examples // batch_size):\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n", " X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n", " sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n", - " acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", + " acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", " acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n", - " print(epoch, \"훈련 정확도:\", acc_train, \"테스트 정확도:\", acc_test)" + " print(epoch, \"배치 데이터 정확도:\", acc_batch, \"테스트 정확도:\", acc_test)" ] }, { @@ -995,13 +1031,12 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " for iteration in range(mnist.train.num_examples // batch_size):\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n", " X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n", " sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n", - " acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", + " acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", " acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n", - " print(epoch, \"훈련 정확도:\", acc_train, \"테스트 정확도:\", acc_test)" + " print(epoch, \"배치 데이터 정확도:\", acc_batch, \"테스트 정확도:\", acc_test)" ] }, { @@ -2190,13 +2225,12 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " for iteration in range(mnist.train.num_examples // batch_size):\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n", " X_batch = X_batch.reshape((batch_size, n_steps, n_inputs))\n", " sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n", - " acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", + " acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", " acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n", - " print(\"에포크\", epoch, \"훈련 정확도 =\", acc_train, \"테스트 정확도 =\", acc_test)" + " print(\"에포크\", epoch, \"배치 데이터 정확도 =\", acc_batch, \"테스트 정확도 =\", acc_test)" ] }, { diff --git a/15_autoencoders.ipynb b/15_autoencoders.ipynb index 330a960..cbcab18 100644 --- a/15_autoencoders.ipynb +++ b/15_autoencoders.ipynb @@ -274,6 +274,42 @@ "MNIST 데이터셋을 사용합니다:" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "주의: `tf.examples.tutorials.mnist`은 삭제될 예정이므로 대신 `tf.keras.datasets.mnist`를 사용하겠습니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()\n", + "X_train = X_train.astype(np.float32).reshape(-1, 28*28) / 255.0\n", + "X_test = X_test.astype(np.float32).reshape(-1, 28*28) / 255.0\n", + "y_train = y_train.astype(np.int32)\n", + "y_test = y_test.astype(np.int32)\n", + "X_valid, X_train = X_train[:5000], X_train[5000:]\n", + "y_valid, y_train = y_train[:5000], y_train[5000:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def shuffle_batch(X, y, batch_size):\n", + " rnd_idx = np.random.permutation(len(X))\n", + " n_batches = len(X) // batch_size\n", + " for batch_idx in np.array_split(rnd_idx, n_batches):\n", + " X_batch, y_batch = X[batch_idx], y[batch_idx]\n", + " yield X_batch, y_batch" + ] + }, { "cell_type": "code", "execution_count": 10, @@ -291,10 +327,8 @@ } ], "source": [ - "tf.logging.set_verbosity(tf.logging.ERROR) # deprecated 경고 메세지를 출력하지 않기 위해 \n", - "from tensorflow.examples.tutorials.mnist import input_data\n", - "mnist = input_data.read_data_sets(\"/tmp/data/\")\n", - "tf.logging.set_verbosity(tf.logging.INFO)" + "# from tensorflow.examples.tutorials.mnist import input_data\n", + "# mnist = input_data.read_data_sets(\"/tmp/data/\")" ] }, { @@ -389,14 +423,14 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " n_batches = mnist.train.num_examples // batch_size\n", + " n_batches = len(X_train) // batch_size\n", " for iteration in range(n_batches):\n", " print(\"\\r{}%\".format(100 * iteration // n_batches), end=\"\") # 책에는 없음\n", " sys.stdout.flush() # 책에는 없음\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " X_batch, y_batch = shuffle_batch(X_train, y_train, batch_size):\n", " sess.run(training_op, feed_dict={X: X_batch})\n", " loss_train = reconstruction_loss.eval(feed_dict={X: X_batch}) # 책에는 없음\n", - " print(\"\\r{}\".format(epoch), \"훈련 MSE:\", loss_train) # 책에는 없음\n", + " print(\"\\r{}\".format(epoch), \"훈련 MSE:\", loss_train) # 책에는 없음\n", " saver.save(sess, \"./my_model_all_layers.ckpt\") # 책에는 없음" ] }, @@ -417,8 +451,8 @@ " with tf.Session() as sess:\n", " if model_path:\n", " saver.restore(sess, model_path)\n", - " X_test = mnist.test.images[:n_test_digits]\n", - " outputs_val = outputs.eval(feed_dict={X: X_test})\n", + "# X_test = mnist.test.images[:n_test_digits]\n", + " outputs_val = outputs.eval(feed_dict={X: X_test[:n_test_digits]})\n", "\n", " fig = plt.figure(figsize=(8, 3 * n_test_digits))\n", " for digit_index in range(n_test_digits):\n", @@ -432,7 +466,7 @@ "cell_type": "code", "execution_count": 14, "metadata": { - "scrolled": true + "scrolled": false }, "outputs": [ { @@ -563,11 +597,11 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " n_batches = mnist.train.num_examples // batch_size\n", + " n_batches = len(X_train) // batch_size\n", " for iteration in range(n_batches):\n", " print(\"\\r{}%\".format(100 * iteration // n_batches), end=\"\")\n", " sys.stdout.flush()\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " X_batch, y_batch = shuffle_batch(X_train, y_train, batch_size):s\n", " sess.run(training_op, feed_dict={X: X_batch})\n", " loss_train = reconstruction_loss.eval(feed_dict={X: X_batch})\n", " print(\"\\r{}\".format(epoch), \"훈련 MSE:\", loss_train)\n", @@ -707,7 +741,7 @@ } ], "source": [ - "hidden_output, W1, b1, W4, b4 = train_autoencoder(mnist.train.images, n_neurons=300, n_epochs=4, batch_size=150,\n", + "hidden_output, W1, b1, W4, b4 = train_autoencoder(X_train, n_neurons=300, n_epochs=4, batch_size=150,\n", " output_activation=None)\n", "_, W2, b2, W3, b3 = train_autoencoder(hidden_output, n_neurons=150, n_epochs=4, batch_size=150)" ] @@ -883,16 +917,16 @@ " for phase in range(2):\n", " print(\"훈련 단계 #{}\".format(phase + 1))\n", " for epoch in range(n_epochs[phase]):\n", - " n_batches = mnist.train.num_examples // batch_sizes[phase]\n", + " n_batches = len(X_train) // batch_sizes[phase]\n", " for iteration in range(n_batches):\n", " print(\"\\r{}%\".format(100 * iteration // n_batches), end=\"\")\n", " sys.stdout.flush()\n", - " X_batch, y_batch = mnist.train.next_batch(batch_sizes[phase])\n", + " X_batch, y_batch = shuffle_batch(X_train, y_train, batch_sizes[phase]):\n", " sess.run(training_ops[phase], feed_dict={X: X_batch})\n", " loss_train = reconstruction_losses[phase].eval(feed_dict={X: X_batch})\n", " print(\"\\r{}\".format(epoch), \"훈련 MSE:\", loss_train)\n", " saver.save(sess, \"./my_model_one_at_a_time.ckpt\")\n", - " loss_test = reconstruction_loss.eval(feed_dict={X: mnist.test.images})\n", + " loss_test = reconstruction_loss.eval(feed_dict={X: X_test})\n", " print(\"테스트 MSE:\", loss_test)" ] }, @@ -939,25 +973,25 @@ " for phase in range(2):\n", " print(\"훈련 단계 #{}\".format(phase + 1))\n", " if phase == 1:\n", - " hidden1_cache = hidden1.eval(feed_dict={X: mnist.train.images})\n", + " hidden1_cache = hidden1.eval(feed_dict={X: X_train})\n", " for epoch in range(n_epochs[phase]):\n", - " n_batches = mnist.train.num_examples // batch_sizes[phase]\n", + " n_batches = len(X_train) // batch_sizes[phase]\n", " for iteration in range(n_batches):\n", " print(\"\\r{}%\".format(100 * iteration // n_batches), end=\"\")\n", " sys.stdout.flush()\n", " if phase == 1:\n", - " indices = rnd.permutation(mnist.train.num_examples)\n", + " indices = rnd.permutation(len(X_train))\n", " hidden1_batch = hidden1_cache[indices[:batch_sizes[phase]]]\n", " feed_dict = {hidden1: hidden1_batch}\n", " sess.run(training_ops[phase], feed_dict=feed_dict)\n", " else:\n", - " X_batch, y_batch = mnist.train.next_batch(batch_sizes[phase])\n", + " X_batch, y_batch = shuffle_batch(X_train, y_train, batch_sizes[phase]):\n", " feed_dict = {X: X_batch}\n", " sess.run(training_ops[phase], feed_dict=feed_dict)\n", " loss_train = reconstruction_losses[phase].eval(feed_dict=feed_dict)\n", " print(\"\\r{}\".format(epoch), \"훈련 MSE:\", loss_train)\n", " saver.save(sess, \"./my_model_cache_frozen.ckpt\")\n", - " loss_test = reconstruction_loss.eval(feed_dict={X: mnist.test.images})\n", + " loss_test = reconstruction_loss.eval(feed_dict={X: X_test})\n", " print(\"테스트 MSE:\", loss_test)" ] }, @@ -993,11 +1027,11 @@ ], "source": [ "n_test_digits = 2\n", - "X_test = mnist.test.images[:n_test_digits]\n", + "# X_test = mnist.test.images[:n_test_digits]\n", "\n", "with tf.Session() as sess:\n", " saver.restore(sess, \"./my_model_one_at_a_time.ckpt\") # not shown in the book\n", - " outputs_val = outputs.eval(feed_dict={X: X_test})\n", + " outputs_val = outputs.eval(feed_dict={X: X_test[:n_test_digits]})\n", "\n", "def plot_image(image, shape=[28, 28]):\n", " plt.imshow(image.reshape(shape), cmap=\"Greys\", interpolation=\"nearest\")\n", @@ -1156,13 +1190,13 @@ " print(\"\\r{}%\".format(100 * iteration // n_batches), end=\"\")\n", " sys.stdout.flush()\n", " indices = rnd.permutation(n_labeled_instances)[:batch_size]\n", - " X_batch, y_batch = mnist.train.images[indices], mnist.train.labels[indices]\n", + " X_batch, y_batch = X_train[indices], y_train[indices]\n", " sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n", " accuracy_val = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", - " print(\"\\r{}\".format(epoch), \"훈련 정확도:\", accuracy_val, end=\" \")\n", + " print(\"\\r{}\".format(epoch), \"검증 세트 정확도:\", accuracy_val, end=\" \")\n", " saver.save(sess, \"./my_model_supervised.ckpt\")\n", - " accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images, y: mnist.test.labels})\n", - " print(\"테스트 정확도:\", accuracy_val)" + " test_val = accuracy.eval(feed_dict={X: X_test, y: y_test})\n", + " print(\"테스트 정확도:\", test_val)" ] }, { @@ -1205,13 +1239,13 @@ " print(\"\\r{}%\".format(100 * iteration // n_batches), end=\"\")\n", " sys.stdout.flush()\n", " indices = rnd.permutation(n_labeled_instances)[:batch_size]\n", - " X_batch, y_batch = mnist.train.images[indices], mnist.train.labels[indices]\n", + " X_batch, y_batch = X_train[indices], y_train[indices]\n", " sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n", " accuracy_val = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n", " print(\"\\r{}\".format(epoch), \"훈련 정확도:\", accuracy_val, end=\"\\t\")\n", " saver.save(sess, \"./my_model_supervised_pretrained.ckpt\")\n", - " accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images, y: mnist.test.labels})\n", - " print(\"테스트 정확도:\", accuracy_val)" + " test_val = accuracy.eval(feed_dict={X: X_test, y: y_test})\n", + " print(\"테스트 정확도:\", test_val)" ] }, { @@ -1309,11 +1343,11 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " n_batches = mnist.train.num_examples // batch_size\n", + " n_batches = len(X_train) // batch_size\n", " for iteration in range(n_batches):\n", " print(\"\\r{}%\".format(100 * iteration // n_batches), end=\"\")\n", " sys.stdout.flush()\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " X_batch, y_batch = shuffle_batch(X_train, y_train, batch_size):\n", " sess.run(training_op, feed_dict={X: X_batch})\n", " loss_train = reconstruction_loss.eval(feed_dict={X: X_batch})\n", " print(\"\\r{}\".format(epoch), \"훈련 MSE:\", loss_train)\n", @@ -1410,11 +1444,11 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " n_batches = mnist.train.num_examples // batch_size\n", + " n_batches = len(X_train) // batch_size\n", " for iteration in range(n_batches):\n", " print(\"\\r{}%\".format(100 * iteration // n_batches), end=\"\")\n", " sys.stdout.flush()\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " X_batch, y_batch = shuffle_batch(X_train, y_train, batch_size):\n", " sess.run(training_op, feed_dict={X: X_batch, training: True})\n", " loss_train = reconstruction_loss.eval(feed_dict={X: X_batch})\n", " print(\"\\r{}\".format(epoch), \"훈련 MSE:\", loss_train)\n", @@ -1657,11 +1691,11 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " n_batches = mnist.train.num_examples // batch_size\n", + " n_batches = len(X_train) // batch_size\n", " for iteration in range(n_batches):\n", " print(\"\\r{}%\".format(100 * iteration // n_batches), end=\"\")\n", " sys.stdout.flush()\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " X_batch, y_batch = shuffle_batch(X_train, y_train, batch_size):\n", " sess.run(training_op, feed_dict={X: X_batch})\n", " reconstruction_loss_val, sparsity_loss_val, loss_val = sess.run([reconstruction_loss, sparsity_loss, loss], feed_dict={X: X_batch})\n", " print(\"\\r{}\".format(epoch), \"훈련 MSE:\", reconstruction_loss_val, \"\\t희소 손실:\", sparsity_loss_val, \"\\t전체 손실:\", loss_val)\n", @@ -1876,11 +1910,11 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " n_batches = mnist.train.num_examples // batch_size\n", + " n_batches = len(X_train) // batch_size\n", " for iteration in range(n_batches):\n", " print(\"\\r{}%\".format(100 * iteration // n_batches), end=\"\")\n", " sys.stdout.flush()\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " X_batch, y_batch = shuffle_batch(X_train, y_train, batch_size):\n", " sess.run(training_op, feed_dict={X: X_batch})\n", " loss_val, reconstruction_loss_val, latent_loss_val = sess.run([loss, reconstruction_loss, latent_loss], feed_dict={X: X_batch})\n", " print(\"\\r{}\".format(epoch), \"훈련 전체 손실:\", loss_val, \"\\t재구성 손실:\", reconstruction_loss_val, \"\\t잠재 손실:\", latent_loss_val)\n", @@ -2023,11 +2057,11 @@ "with tf.Session() as sess:\n", " init.run()\n", " for epoch in range(n_epochs):\n", - " n_batches = mnist.train.num_examples // batch_size\n", + " n_batches = len(X_train) // batch_size\n", " for iteration in range(n_batches):\n", " print(\"\\r{}%\".format(100 * iteration // n_batches), end=\"\") # not shown in the book\n", " sys.stdout.flush() # not shown\n", - " X_batch, y_batch = mnist.train.next_batch(batch_size)\n", + " X_batch, y_batch = shuffle_batch(X_train, y_train, batch_size):\n", " sess.run(training_op, feed_dict={X: X_batch})\n", " loss_val, reconstruction_loss_val, latent_loss_val = sess.run([loss, reconstruction_loss, latent_loss], feed_dict={X: X_batch}) # not shown\n", " print(\"\\r{}\".format(epoch), \"훈련 전체 손실:\", loss_val, \"\\t재구성 손실:\", reconstruction_loss_val, \"\\t잠재 손실:\", latent_loss_val) # not shown\n", @@ -2130,12 +2164,13 @@ ], "source": [ "n_digits = 3\n", - "X_test, y_test = mnist.test.next_batch(batch_size)\n", + "# X_test, y_test = mnist.test.next_batch(batch_size)\n", + "X_test_batch, y_test_batch = shuffle_batch(X_test, y_test, batch_size):\n", "codings = hidden3\n", "\n", "with tf.Session() as sess:\n", " saver.restore(sess, \"./my_model_variational.ckpt\")\n", - " codings_val = codings.eval(feed_dict={X: X_test})" + " codings_val = codings.eval(feed_dict={X: X_test_batch})" ] }, { @@ -2191,7 +2226,7 @@ "fig = plt.figure(figsize=(8, 2.5 * n_digits))\n", "for iteration in range(n_digits):\n", " plt.subplot(n_digits, 2, 1 + 2 * iteration)\n", - " plot_image(X_test[iteration])\n", + " plot_image(X_test_batch[iteration])\n", " plt.subplot(n_digits, 2, 2 + 2 * iteration)\n", " plot_image(outputs_val[iteration])" ] @@ -2307,7 +2342,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.5" + "version": "3.6.5" }, "nav_menu": { "height": "381px",