variance_scaling_initializer 수정, 텐서보드 그래프 분리, keras mnist 적용
This commit is contained in:
@@ -186,7 +186,7 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"he_init = tf.contrib.layers.variance_scaling_initializer()\n",
|
"he_init = tf.variance_scaling_initializer()\n",
|
||||||
"hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu,\n",
|
"hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu,\n",
|
||||||
" kernel_initializer=he_init, name=\"hidden1\")"
|
" kernel_initializer=he_init, name=\"hidden1\")"
|
||||||
]
|
]
|
||||||
@@ -310,7 +310,7 @@
|
|||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")"
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -377,6 +377,42 @@
|
|||||||
"데이터를 로드합니다:"
|
"데이터를 로드합니다:"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"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",
|
"cell_type": "code",
|
||||||
"execution_count": 19,
|
"execution_count": 19,
|
||||||
@@ -394,10 +430,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"from tensorflow.examples.tutorials.mnist import input_data\n",
|
"# 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/\")"
|
||||||
"mnist = input_data.read_data_sets(\"/tmp/data/\")\n",
|
|
||||||
"tf.logging.set_verbosity(tf.logging.INFO)"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -429,13 +463,12 @@
|
|||||||
"with tf.Session() as sess:\n",
|
"with tf.Session() as sess:\n",
|
||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" if epoch % 5 == 0:\n",
|
" if epoch % 5 == 0:\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: mnist.validation.images, y: mnist.validation.labels})\n",
|
" acc_valid = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" print(epoch, \"배치 정확도:\", acc_train, \"검증 세트 정확도:\", acc_test)\n",
|
" print(epoch, \"배치 데이터 정확도:\", acc_batch, \"검증 세트 정확도:\", acc_valid)\n",
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -657,7 +690,7 @@
|
|||||||
"n_outputs = 10\n",
|
"n_outputs = 10\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")\n",
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.name_scope(\"dnn\"):\n",
|
"with tf.name_scope(\"dnn\"):\n",
|
||||||
" hidden1 = tf.layers.dense(X, n_hidden1, activation=selu, name=\"hidden1\")\n",
|
" hidden1 = tf.layers.dense(X, n_hidden1, activation=selu, name=\"hidden1\")\n",
|
||||||
@@ -712,21 +745,20 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"means = mnist.train.images.mean(axis=0, keepdims=True)\n",
|
"means = X_train.mean(axis=0, keepdims=True)\n",
|
||||||
"stds = mnist.train.images.std(axis=0, keepdims=True) + 1e-10\n",
|
"stds = X_train.std(axis=0, keepdims=True) + 1e-10\n",
|
||||||
|
"X_val_scaled = (X_valid - means) / stds\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.Session() as sess:\n",
|
"with tf.Session() as sess:\n",
|
||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" X_batch_scaled = (X_batch - means) / stds\n",
|
" X_batch_scaled = (X_batch - means) / stds\n",
|
||||||
" sess.run(training_op, feed_dict={X: X_batch_scaled, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch_scaled, y: y_batch})\n",
|
||||||
" if epoch % 5 == 0:\n",
|
" if epoch % 5 == 0:\n",
|
||||||
" acc_train = accuracy.eval(feed_dict={X: X_batch_scaled, y: y_batch})\n",
|
" acc_batch = accuracy.eval(feed_dict={X: X_batch_scaled, y: y_batch})\n",
|
||||||
" X_val_scaled = (mnist.validation.images - means) / stds\n",
|
" acc_valid = accuracy.eval(feed_dict={X: X_val_scaled, y: y_valid})\n",
|
||||||
" acc_test = accuracy.eval(feed_dict={X: X_val_scaled, y: mnist.validation.labels})\n",
|
" print(epoch, \"배치 데이터 정확도:\", acc_batch, \"검증 세트 정확도:\", acc_valid)\n",
|
||||||
" print(epoch, \"배치 정확도:\", acc_train, \"검증 세트 정확도:\", acc_test)\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_model_final_selu.ckpt\")"
|
" save_path = saver.save(sess, \"./my_model_final_selu.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -837,11 +869,11 @@
|
|||||||
"batch_norm_momentum = 0.9\n",
|
"batch_norm_momentum = 0.9\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")\n",
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")\n",
|
||||||
"training = tf.placeholder_with_default(False, shape=(), name='training')\n",
|
"training = tf.placeholder_with_default(False, shape=(), name='training')\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.name_scope(\"dnn\"):\n",
|
"with tf.name_scope(\"dnn\"):\n",
|
||||||
" he_init = tf.contrib.layers.variance_scaling_initializer()\n",
|
" he_init = tf.variance_scaling_initializer()\n",
|
||||||
"\n",
|
"\n",
|
||||||
" my_batch_norm_layer = partial(\n",
|
" my_batch_norm_layer = partial(\n",
|
||||||
" tf.layers.batch_normalization,\n",
|
" tf.layers.batch_normalization,\n",
|
||||||
@@ -930,13 +962,11 @@
|
|||||||
"with tf.Session() as sess:\n",
|
"with tf.Session() as sess:\n",
|
||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run([training_op, extra_update_ops],\n",
|
" sess.run([training_op, extra_update_ops],\n",
|
||||||
" feed_dict={training: True, X: X_batch, y: y_batch})\n",
|
" feed_dict={training: True, X: X_batch, y: y_batch})\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" y: mnist.test.labels})\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val)\n",
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val)\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -1075,7 +1105,7 @@
|
|||||||
"n_outputs = 10\n",
|
"n_outputs = 10\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")\n",
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.name_scope(\"dnn\"):\n",
|
"with tf.name_scope(\"dnn\"):\n",
|
||||||
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\")\n",
|
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\")\n",
|
||||||
@@ -1195,12 +1225,10 @@
|
|||||||
"with tf.Session() as sess:\n",
|
"with tf.Session() as sess:\n",
|
||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" y: mnist.test.labels})\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val)\n",
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val)\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -1543,46 +1571,11 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 49,
|
"execution_count": null,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"from IPython.display import clear_output, Image, display, HTML\n",
|
"from tensorflow_graph_in_jupyter import show_graph"
|
||||||
"\n",
|
|
||||||
"def strip_consts(graph_def, max_const_size=32):\n",
|
|
||||||
" \"\"\"Strip large constant values from graph_def.\"\"\"\n",
|
|
||||||
" strip_def = tf.GraphDef()\n",
|
|
||||||
" for n0 in graph_def.node:\n",
|
|
||||||
" n = strip_def.node.add() \n",
|
|
||||||
" n.MergeFrom(n0)\n",
|
|
||||||
" if n.op == 'Const':\n",
|
|
||||||
" tensor = n.attr['value'].tensor\n",
|
|
||||||
" size = len(tensor.tensor_content)\n",
|
|
||||||
" if size > max_const_size:\n",
|
|
||||||
" tensor.tensor_content = b\"<stripped %d bytes>\"%size\n",
|
|
||||||
" return strip_def\n",
|
|
||||||
"\n",
|
|
||||||
"def show_graph(graph_def, max_const_size=32):\n",
|
|
||||||
" \"\"\"Visualize TensorFlow graph.\"\"\"\n",
|
|
||||||
" if hasattr(graph_def, 'as_graph_def'):\n",
|
|
||||||
" graph_def = graph_def.as_graph_def()\n",
|
|
||||||
" strip_def = strip_consts(graph_def, max_const_size=max_const_size)\n",
|
|
||||||
" code = \"\"\"\n",
|
|
||||||
" <script>\n",
|
|
||||||
" function load() {{\n",
|
|
||||||
" document.getElementById(\"{id}\").pbtxt = {data};\n",
|
|
||||||
" }}\n",
|
|
||||||
" </script>\n",
|
|
||||||
" <link rel=\"import\" href=\"https://tensorboard.appspot.com/tf-graph-basic.build.html\" onload=load()>\n",
|
|
||||||
" <div style=\"height:600px\">\n",
|
|
||||||
" <tf-graph-basic id=\"{id}\"></tf-graph-basic>\n",
|
|
||||||
" </div>\n",
|
|
||||||
" \"\"\".format(data=repr(str(strip_def)), id='graph'+str(np.random.rand()))\n",
|
|
||||||
"\n",
|
|
||||||
" iframe = \"\"\"\n",
|
|
||||||
" <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"{}\"></iframe>\n",
|
|
||||||
" \"\"\".format(code.replace('\"', '"'))\n",
|
|
||||||
" display(HTML(iframe))"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1744,12 +1737,10 @@
|
|||||||
" saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
" saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" y: mnist.test.labels})\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val)\n",
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val)\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\") "
|
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\") "
|
||||||
]
|
]
|
||||||
@@ -1777,7 +1768,7 @@
|
|||||||
"n_outputs = 10\n",
|
"n_outputs = 10\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")\n",
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.name_scope(\"dnn\"):\n",
|
"with tf.name_scope(\"dnn\"):\n",
|
||||||
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\")\n",
|
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\")\n",
|
||||||
@@ -1853,12 +1844,10 @@
|
|||||||
" saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
" saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" y: mnist.test.labels})\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val)\n",
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val)\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\") "
|
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\") "
|
||||||
]
|
]
|
||||||
@@ -1953,12 +1942,10 @@
|
|||||||
" saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
" saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" y: mnist.test.labels})\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val)\n",
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val)\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = new_saver.save(sess, \"./my_new_model_final.ckpt\")"
|
" save_path = new_saver.save(sess, \"./my_new_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -1986,7 +1973,7 @@
|
|||||||
"n_outputs = 10 # 새로 만듦!\n",
|
"n_outputs = 10 # 새로 만듦!\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")\n",
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.name_scope(\"dnn\"):\n",
|
"with tf.name_scope(\"dnn\"):\n",
|
||||||
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\") # 재사용\n",
|
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\") # 재사용\n",
|
||||||
@@ -2060,13 +2047,11 @@
|
|||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" restore_saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
" restore_saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
" for epoch in range(n_epochs): # 책에는 없음\n",
|
" for epoch in range(n_epochs): # 책에는 없음\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size): # 책에는 없음\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size): # 책에는 없음\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size) # 책에는 없음\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch}) # 책에는 없음\n",
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch}) # 책에는 없음\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid}) # 책에는 없음\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images, # 책에는 없음\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val) # 책에는 없음\n",
|
||||||
" y: mnist.test.labels}) # 책에는 없음\n",
|
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val) # 책에는 없음\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\")"
|
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -2285,7 +2270,7 @@
|
|||||||
"n_outputs = 10 # 새로 만듦!\n",
|
"n_outputs = 10 # 새로 만듦!\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")\n",
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.name_scope(\"dnn\"):\n",
|
"with tf.name_scope(\"dnn\"):\n",
|
||||||
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\") # 재사용\n",
|
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\") # 재사용\n",
|
||||||
@@ -2372,12 +2357,10 @@
|
|||||||
" restore_saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
" restore_saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" y: mnist.test.labels})\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val)\n",
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val)\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\")"
|
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -2398,7 +2381,7 @@
|
|||||||
"n_outputs = 10 # 새로 만듦!\n",
|
"n_outputs = 10 # 새로 만듦!\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")"
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -2492,12 +2475,10 @@
|
|||||||
" restore_saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
" restore_saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" y: mnist.test.labels})\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val)\n",
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val)\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\")"
|
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -2525,7 +2506,7 @@
|
|||||||
"n_outputs = 10 # 새로 만듦!\n",
|
"n_outputs = 10 # 새로 만듦!\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")\n",
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.name_scope(\"dnn\"):\n",
|
"with tf.name_scope(\"dnn\"):\n",
|
||||||
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu,\n",
|
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu,\n",
|
||||||
@@ -2602,25 +2583,25 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"import numpy as np\n",
|
"import numpy as np\n",
|
||||||
"\n",
|
"\n",
|
||||||
"n_batches = mnist.train.num_examples // batch_size\n",
|
"n_batches = len(X_train) // batch_size\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.Session() as sess:\n",
|
"with tf.Session() as sess:\n",
|
||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" restore_saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
" restore_saver.restore(sess, \"./my_model_final.ckpt\")\n",
|
||||||
" \n",
|
" \n",
|
||||||
" h2_cache = sess.run(hidden2, feed_dict={X: mnist.train.images})\n",
|
" h2_cache = sess.run(hidden2, feed_dict={X: X_train})\n",
|
||||||
" h2_cache_test = sess.run(hidden2, feed_dict={X: mnist.test.images}) # 책에는 없음\n",
|
" h2_cache_valid = sess.run(hidden2, feed_dict={X: X_valid}) # 책에는 없음\n",
|
||||||
"\n",
|
"\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" shuffled_idx = np.random.permutation(mnist.train.num_examples)\n",
|
" shuffled_idx = np.random.permutation(len(X_train))\n",
|
||||||
" hidden2_batches = np.array_split(h2_cache[shuffled_idx], n_batches)\n",
|
" hidden2_batches = np.array_split(h2_cache[shuffled_idx], n_batches)\n",
|
||||||
" y_batches = np.array_split(mnist.train.labels[shuffled_idx], n_batches)\n",
|
" y_batches = np.array_split(y_train[shuffled_idx], n_batches)\n",
|
||||||
" for hidden2_batch, y_batch in zip(hidden2_batches, y_batches):\n",
|
" for hidden2_batch, y_batch in zip(hidden2_batches, y_batches):\n",
|
||||||
" sess.run(training_op, feed_dict={hidden2:hidden2_batch, y:y_batch})\n",
|
" sess.run(training_op, feed_dict={hidden2:hidden2_batch, y:y_batch})\n",
|
||||||
"\n",
|
"\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={hidden2: h2_cache_test, # 책에는 없음\n",
|
" accuracy_val = accuracy.eval(feed_dict={hidden2: h2_cache_valid, # 책에는 없음\n",
|
||||||
" y: mnist.test.labels}) # 책에는 없음\n",
|
" y: y_valid}) # 책에는 없음\n",
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val) # 책에는 없음\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val) # 책에는 없음\n",
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\")"
|
" save_path = saver.save(sess, \"./my_new_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -2736,7 +2717,7 @@
|
|||||||
"n_outputs = 10\n",
|
"n_outputs = 10\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")\n",
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.name_scope(\"dnn\"):\n",
|
"with tf.name_scope(\"dnn\"):\n",
|
||||||
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\")\n",
|
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\")\n",
|
||||||
@@ -2803,12 +2784,10 @@
|
|||||||
"with tf.Session() as sess:\n",
|
"with tf.Session() as sess:\n",
|
||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" y: mnist.test.labels})\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val)\n",
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val)\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -2847,7 +2826,7 @@
|
|||||||
"n_outputs = 10\n",
|
"n_outputs = 10\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")\n",
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.name_scope(\"dnn\"):\n",
|
"with tf.name_scope(\"dnn\"):\n",
|
||||||
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\")\n",
|
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\")\n",
|
||||||
@@ -2948,12 +2927,10 @@
|
|||||||
"with tf.Session() as sess:\n",
|
"with tf.Session() as sess:\n",
|
||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" y: mnist.test.labels})\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val)\n",
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val)\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -2979,7 +2956,7 @@
|
|||||||
"n_outputs = 10\n",
|
"n_outputs = 10\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")"
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -3104,12 +3081,10 @@
|
|||||||
"with tf.Session() as sess:\n",
|
"with tf.Session() as sess:\n",
|
||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" y: mnist.test.labels})\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val)\n",
|
||||||
" print(epoch, \"테스트 정확도:\", accuracy_val)\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -3130,7 +3105,7 @@
|
|||||||
"reset_graph()\n",
|
"reset_graph()\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")"
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -3217,11 +3192,10 @@
|
|||||||
"with tf.Session() as sess:\n",
|
"with tf.Session() as sess:\n",
|
||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={training: True, X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={training: True, X: X_batch, y: y_batch})\n",
|
||||||
" acc_test = accuracy.eval(feed_dict={X: mnist.test.images, y: mnist.test.labels})\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
|
||||||
" print(epoch, \"테스트 정확도:\", acc_test)\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val)\n",
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
" save_path = saver.save(sess, \"./my_model_final.ckpt\")"
|
||||||
]
|
]
|
||||||
@@ -3257,7 +3231,7 @@
|
|||||||
"momentum = 0.9\n",
|
"momentum = 0.9\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")\n",
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"with tf.name_scope(\"dnn\"):\n",
|
"with tf.name_scope(\"dnn\"):\n",
|
||||||
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\")\n",
|
" hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=\"hidden1\")\n",
|
||||||
@@ -3384,14 +3358,12 @@
|
|||||||
"with tf.Session() as sess: # 책에는 없음\n",
|
"with tf.Session() as sess: # 책에는 없음\n",
|
||||||
" init.run() # 책에는 없음\n",
|
" init.run() # 책에는 없음\n",
|
||||||
" for epoch in range(n_epochs): # 책에는 없음\n",
|
" for epoch in range(n_epochs): # 책에는 없음\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size): # 책에는 없음\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size): # 책에는 없음\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size) # 책에는 없음\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" clip_weights.eval()\n",
|
" clip_weights.eval()\n",
|
||||||
" clip_weights2.eval() # 책에는 없음\n",
|
" clip_weights2.eval() # 책에는 없음\n",
|
||||||
" acc_test = accuracy.eval(feed_dict={X: mnist.test.images, # 책에는 없음\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid}) # 책에는 없음\n",
|
||||||
" y: mnist.test.labels}) # 책에는 없음\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val) # 책에는 없음\n",
|
||||||
" print(epoch, \"테스트 정확도:\", acc_test) # 책에는 없음\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_model_final.ckpt\") # 책에는 없음"
|
" save_path = saver.save(sess, \"./my_model_final.ckpt\") # 책에는 없음"
|
||||||
]
|
]
|
||||||
@@ -3443,7 +3415,7 @@
|
|||||||
"momentum = 0.9\n",
|
"momentum = 0.9\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")"
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -3541,15 +3513,13 @@
|
|||||||
"with tf.Session() as sess:\n",
|
"with tf.Session() as sess:\n",
|
||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
|
||||||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
|
||||||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" sess.run(clip_all_weights)\n",
|
" sess.run(clip_all_weights)\n",
|
||||||
" acc_test = accuracy.eval(feed_dict={X: mnist.test.images, # 책에는 없음\n",
|
" accuracy_val = accuracy.eval(feed_dict={X: X_valid, y: y_valid}) # 책에는 없음\n",
|
||||||
" y: mnist.test.labels}) # 책에는 없음\n",
|
" print(epoch, \"검증 세트 정확도:\", accuracy_val) # 책에는 없음\n",
|
||||||
" print(epoch, \"테스트 정확도:\", acc_test) # 책에는 없음\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
" save_path = saver.save(sess, \"./my_model_final.ckpt\") # 책에는 없음"
|
" save_path = saver.save(sess, \"./my_model_final.ckpt\") # 책에는 없음"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -3585,7 +3555,7 @@
|
|||||||
"name": "python",
|
"name": "python",
|
||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.5.5"
|
"version": "3.6.5"
|
||||||
},
|
},
|
||||||
"nav_menu": {
|
"nav_menu": {
|
||||||
"height": "360px",
|
"height": "360px",
|
||||||
|
|||||||
@@ -163,7 +163,7 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"he_init = tf.contrib.layers.variance_scaling_initializer()\n",
|
"he_init = tf.variance_scaling_initializer()\n",
|
||||||
"\n",
|
"\n",
|
||||||
"def dnn(inputs, n_hidden_layers=5, n_neurons=100, name=None,\n",
|
"def dnn(inputs, n_hidden_layers=5, n_neurons=100, name=None,\n",
|
||||||
" activation=tf.nn.elu, initializer=he_init):\n",
|
" activation=tf.nn.elu, initializer=he_init):\n",
|
||||||
@@ -189,7 +189,7 @@
|
|||||||
"reset_graph()\n",
|
"reset_graph()\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
"X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=\"X\")\n",
|
||||||
"y = tf.placeholder(tf.int64, shape=(None), name=\"y\")\n",
|
"y = tf.placeholder(tf.int32, shape=(None), name=\"y\")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"dnn_outputs = dnn(X)\n",
|
"dnn_outputs = dnn(X)\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -246,6 +246,13 @@
|
|||||||
"MNIST 데이터셋을 로드합니다:"
|
"MNIST 데이터셋을 로드합니다:"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"주의: `tf.examples.tutorials.mnist`은 삭제될 예정이므로 대신 `tf.keras.datasets.mnist`를 사용하겠습니다."
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 7,
|
"execution_count": 7,
|
||||||
@@ -263,10 +270,13 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"from tensorflow.examples.tutorials.mnist import input_data\n",
|
"(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()\n",
|
||||||
"tf.logging.set_verbosity(tf.logging.ERROR) # deprecated 경고 메세지를 출력하지 않기 위해 \n",
|
"X_train = X_train.astype(np.float32).reshape(-1, 28*28) / 255.0\n",
|
||||||
"mnist = input_data.read_data_sets(\"/tmp/data/\")\n",
|
"X_test = X_test.astype(np.float32).reshape(-1, 28*28) / 255.0\n",
|
||||||
"tf.logging.set_verbosity(tf.logging.INFO)"
|
"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:]"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -282,12 +292,12 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"X_train1 = mnist.train.images[mnist.train.labels < 5]\n",
|
"X_train1 = X_train[y_train < 5]\n",
|
||||||
"y_train1 = mnist.train.labels[mnist.train.labels < 5]\n",
|
"y_train1 = y_train[y_train < 5]\n",
|
||||||
"X_valid1 = mnist.validation.images[mnist.validation.labels < 5]\n",
|
"X_valid1 = X_valid[y_valid < 5]\n",
|
||||||
"y_valid1 = mnist.validation.labels[mnist.validation.labels < 5]\n",
|
"y_valid1 = y_valid[y_valid < 5]\n",
|
||||||
"X_test1 = mnist.test.images[mnist.test.labels < 5]\n",
|
"X_test1 = X_test[y_test < 5]\n",
|
||||||
"y_test1 = mnist.test.labels[mnist.test.labels < 5]"
|
"y_test1 = y_test[y_test < 5]"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -20536,12 +20546,12 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"X_train2_full = mnist.train.images[mnist.train.labels >= 5]\n",
|
"X_train2_full = X_train[y_train >= 5]\n",
|
||||||
"y_train2_full = mnist.train.labels[mnist.train.labels >= 5] - 5\n",
|
"y_train2_full = y_train[y_train >= 5] - 5\n",
|
||||||
"X_valid2_full = mnist.validation.images[mnist.validation.labels >= 5]\n",
|
"X_valid2_full = X_valid[y_valid >= 5]\n",
|
||||||
"y_valid2_full = mnist.validation.labels[mnist.validation.labels >= 5] - 5\n",
|
"y_valid2_full = y_valid[y_valid >= 5] - 5\n",
|
||||||
"X_test2 = mnist.test.images[mnist.test.labels >= 5]\n",
|
"X_test2 = X_test[y_test >= 5]\n",
|
||||||
"y_test2 = mnist.test.labels[mnist.test.labels >= 5] - 5"
|
"y_test2 = y_test[y_test >= 5] - 5"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -21577,14 +21587,14 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"X_train1 = mnist.train.images\n",
|
"X_train1 = X_train\n",
|
||||||
"y_train1 = mnist.train.labels\n",
|
"y_train1 = y_train\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X_train2 = mnist.validation.images\n",
|
"X_train2 = X_valid\n",
|
||||||
"y_train2 = mnist.validation.labels\n",
|
"y_train2 = y_valid\n",
|
||||||
"\n",
|
"\n",
|
||||||
"X_test = mnist.test.images\n",
|
"X_test = X_test\n",
|
||||||
"y_test = mnist.test.labels"
|
"y_test = y_test"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -21907,7 +21917,7 @@
|
|||||||
"with tf.Session() as sess:\n",
|
"with tf.Session() as sess:\n",
|
||||||
" init.run()\n",
|
" init.run()\n",
|
||||||
" for epoch in range(n_epochs):\n",
|
" for epoch in range(n_epochs):\n",
|
||||||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
" for iteration in range(len(X_train1) // batch_size):\n",
|
||||||
" X_batch, y_batch = generate_batch(X_train1, y_train1, batch_size)\n",
|
" X_batch, y_batch = generate_batch(X_train1, y_train1, batch_size)\n",
|
||||||
" loss_val, _ = sess.run([loss, training_op], feed_dict={X: X_batch, y: y_batch})\n",
|
" loss_val, _ = sess.run([loss, training_op], feed_dict={X: X_batch, y: y_batch})\n",
|
||||||
" print(epoch, \"훈련 손실:\", loss_val)\n",
|
" print(epoch, \"훈련 손실:\", loss_val)\n",
|
||||||
@@ -22142,7 +22152,7 @@
|
|||||||
"name": "python",
|
"name": "python",
|
||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.5.5"
|
"version": "3.6.5"
|
||||||
},
|
},
|
||||||
"nav_menu": {
|
"nav_menu": {
|
||||||
"height": "360px",
|
"height": "360px",
|
||||||
|
|||||||
Reference in New Issue
Block a user