3517 lines
638 KiB
Plaintext
3517 lines
638 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"CPython 3.5.5\n",
|
||
"IPython 6.3.0\n",
|
||
"\n",
|
||
"numpy 1.14.2\n",
|
||
"sklearn 0.19.1\n",
|
||
"scipy 1.0.1\n",
|
||
"matplotlib 2.2.2\n",
|
||
"tensorflow 1.7.0\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"%load_ext watermark\n",
|
||
"%watermark -v -p numpy,sklearn,scipy,matplotlib,tensorflow"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**14장 – 순환 신경망**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"_이 노트북은 14장에 있는 모든 샘플 코드와 연습문제 해답을 가지고 있습니다._"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 설정"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"파이썬 2와 3을 모두 지원합니다. 공통 모듈을 임포트하고 맷플롯립 그림이 노트북 안에 포함되도록 설정하고 생성한 그림을 저장하기 위한 함수를 준비합니다:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# 파이썬 2와 파이썬 3 지원\n",
|
||
"from __future__ import division, print_function, unicode_literals\n",
|
||
"\n",
|
||
"# 공통\n",
|
||
"import numpy as np\n",
|
||
"import os\n",
|
||
"\n",
|
||
"# 일관된 출력을 위해 유사난수 초기화\n",
|
||
"def reset_graph(seed=42):\n",
|
||
" tf.reset_default_graph()\n",
|
||
" tf.set_random_seed(seed)\n",
|
||
" np.random.seed(seed)\n",
|
||
"\n",
|
||
"# 맷플롯립 설정\n",
|
||
"%matplotlib inline\n",
|
||
"import matplotlib\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"plt.rcParams['axes.labelsize'] = 14\n",
|
||
"plt.rcParams['xtick.labelsize'] = 12\n",
|
||
"plt.rcParams['ytick.labelsize'] = 12\n",
|
||
"\n",
|
||
"# 한글출력\n",
|
||
"plt.rcParams['font.family'] = 'NanumBarunGothic'\n",
|
||
"plt.rcParams['axes.unicode_minus'] = False\n",
|
||
"\n",
|
||
"# 그림을 저장할 폴더\n",
|
||
"PROJECT_ROOT_DIR = \".\"\n",
|
||
"CHAPTER_ID = \"rnn\"\n",
|
||
"\n",
|
||
"def save_fig(fig_id, tight_layout=True):\n",
|
||
" path = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID, fig_id + \".png\")\n",
|
||
" if tight_layout:\n",
|
||
" plt.tight_layout()\n",
|
||
" plt.savefig(path, format='png', dpi=300)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"텐서플로를 임포트합니다:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import tensorflow as tf"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 기본 RNN"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 수동으로 RNN 만들기"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_inputs = 3\n",
|
||
"n_neurons = 5\n",
|
||
"\n",
|
||
"X0 = tf.placeholder(tf.float32, [None, n_inputs])\n",
|
||
"X1 = tf.placeholder(tf.float32, [None, n_inputs])\n",
|
||
"\n",
|
||
"Wx = tf.Variable(tf.random_normal(shape=[n_inputs, n_neurons],dtype=tf.float32))\n",
|
||
"Wy = tf.Variable(tf.random_normal(shape=[n_neurons,n_neurons],dtype=tf.float32))\n",
|
||
"b = tf.Variable(tf.zeros([1, n_neurons], dtype=tf.float32))\n",
|
||
"\n",
|
||
"Y0 = tf.tanh(tf.matmul(X0, Wx) + b)\n",
|
||
"Y1 = tf.tanh(tf.matmul(Y0, Wy) + tf.matmul(X1, Wx) + b)\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"\n",
|
||
"X0_batch = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 0, 1]]) # t = 0\n",
|
||
"X1_batch = np.array([[9, 8, 7], [0, 0, 0], [6, 5, 4], [3, 2, 1]]) # t = 1\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" Y0_val, Y1_val = sess.run([Y0, Y1], feed_dict={X0: X0_batch, X1: X1_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[-0.06640061 0.9625767 0.6810579 0.7091854 -0.89821595]\n",
|
||
" [ 0.99777555 -0.7197888 -0.99657613 0.96739244 -0.99989706]\n",
|
||
" [ 0.99999785 -0.9989881 -0.99999887 0.9967763 -0.9999999 ]\n",
|
||
" [ 1. -1. -1. -0.9981892 0.9995087 ]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(Y0_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[ 1. -1. -1. 0.40200272 -0.99999994]\n",
|
||
" [-0.12210429 0.62805295 0.96718436 -0.9937122 -0.2583933 ]\n",
|
||
" [ 0.99999815 -0.9999994 -0.99999744 -0.8594331 -0.99998796]\n",
|
||
" [ 0.99928296 -0.9999981 -0.9999059 0.98579615 -0.9220575 ]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(Y1_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## `static_rnn()`을 사용하여 만들기"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_inputs = 3\n",
|
||
"n_neurons = 5"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"WARNING:tensorflow:From /home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py:198: retry (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
|
||
"Instructions for updating:\n",
|
||
"Use the retry module or similar alternatives.\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"X0 = tf.placeholder(tf.float32, [None, n_inputs])\n",
|
||
"X1 = tf.placeholder(tf.float32, [None, n_inputs])\n",
|
||
"\n",
|
||
"basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
"output_seqs, states = tf.contrib.rnn.static_rnn(basic_cell, [X0, X1],\n",
|
||
" dtype=tf.float32)\n",
|
||
"Y0, Y1 = output_seqs"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X0_batch = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 0, 1]])\n",
|
||
"X1_batch = np.array([[9, 8, 7], [0, 0, 0], [6, 5, 4], [3, 2, 1]])\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" Y0_val, Y1_val = sess.run([Y0, Y1], feed_dict={X0: X0_batch, X1: X1_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[ 0.30741337, -0.32884312, -0.6542847 , -0.9385059 , 0.52089024],\n",
|
||
" [ 0.9912275 , -0.95425415, -0.7518078 , -0.9995208 , 0.98202336],\n",
|
||
" [ 0.99992675, -0.99783254, -0.82473516, -0.99999636, 0.99947786],\n",
|
||
" [ 0.9967709 , -0.6875061 , 0.8419969 , 0.93039113, 0.81206834]],\n",
|
||
" dtype=float32)"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"Y0_val"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[ 0.99998885, -0.9997606 , -0.06679297, -0.9999803 , 0.99982214],\n",
|
||
" [-0.65249425, -0.5152086 , -0.37968948, -0.5922594 , -0.08968376],\n",
|
||
" [ 0.998624 , -0.99715203, -0.03308632, -0.9991566 , 0.9932902 ],\n",
|
||
" [ 0.99681675, -0.9598194 , 0.39660627, -0.8307605 , 0.7967197 ]],\n",
|
||
" dtype=float32)"
|
||
]
|
||
},
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"Y1_val"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from IPython.display import clear_output, Image, display, HTML\n",
|
||
"\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))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"\n",
|
||
" <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"\n",
|
||
" <script>\n",
|
||
" function load() {\n",
|
||
" document.getElementById("graph0.3745401188473625").pbtxt = 'node {\\n name: "Placeholder"\\n op: "Placeholder"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 3\\n }\\n }\\n }\\n }\\n}\\nnode {\\n name: "Placeholder_1"\\n op: "Placeholder"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 3\\n }\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/Shape"\\n op: "Shape"\\n input: "Placeholder"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "out_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack_2"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice"\\n op: "StridedSlice"\\n input: "rnn/Shape"\\n input: "rnn/strided_slice/stack"\\n input: "rnn/strided_slice/stack_1"\\n input: "rnn/strided_slice/stack_2"\\n attr {\\n key: "Index"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "begin_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "ellipsis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "end_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "new_axis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "shrink_axis_mask"\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims/dim"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims"\\n op: "ExpandDims"\\n input: "rnn/strided_slice"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims/dim"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tdim"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/concat/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/concat"\\n op: "ConcatV2"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims"\\n input: "rnn/BasicRNNCellZeroState/Const"\\n input: "rnn/BasicRNNCellZeroState/concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/zeros/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/zeros"\\n op: "Fill"\\n input: "rnn/BasicRNNCellZeroState/concat"\\n input: "rnn/BasicRNNCellZeroState/zeros/Const"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "index_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims_1/dim"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims_1"\\n op: "ExpandDims"\\n input: "rnn/strided_slice"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims_1/dim"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tdim"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/Const_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: "\\\\010\\\\000\\\\000\\\\000\\\\005\\\\000\\\\000\\\\000"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: -0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform"\\n op: "RandomUniform"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "seed"\\n value {\\n i: 42\\n }\\n }\\n attr {\\n key: "seed2"\\n value {\\n i: 20\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub"\\n op: "Sub"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul"\\n op: "Mul"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform"\\n op: "Add"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel"\\n op: "VariableV2"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "container"\\n value {\\n s: ""\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: 8\\n }\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: "shared_name"\\n value {\\n s: ""\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Assign"\\n op: "Assign"\\n input: "rnn/basic_rnn_cell/kernel"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "use_locking"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "validate_shape"\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/read"\\n op: "Identity"\\n input: "rnn/basic_rnn_cell/kernel"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Initializer/zeros/shape_as_tensor"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Initializer/zeros/Const"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Initializer/zeros"\\n op: "Fill"\\n input: "rnn/basic_rnn_cell/bias/Initializer/zeros/shape_as_tensor"\\n input: "rnn/basic_rnn_cell/bias/Initializer/zeros/Const"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "index_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias"\\n op: "VariableV2"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "container"\\n value {\\n s: ""\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: "shared_name"\\n value {\\n s: ""\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Assign"\\n op: "Assign"\\n input: "rnn/basic_rnn_cell/bias"\\n input: "rnn/basic_rnn_cell/bias/Initializer/zeros"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "use_locking"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "validate_shape"\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/read"\\n op: "Identity"\\n input: "rnn/basic_rnn_cell/bias"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/concat/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/concat"\\n op: "ConcatV2"\\n input: "Placeholder"\\n input: "rnn/BasicRNNCellZeroState/zeros"\\n input: "rnn/basic_rnn_cell/concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/MatMul"\\n op: "MatMul"\\n input: "rnn/basic_rnn_cell/concat"\\n input: "rnn/basic_rnn_cell/kernel/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "transpose_a"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "transpose_b"\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/BiasAdd"\\n op: "BiasAdd"\\n input: "rnn/basic_rnn_cell/MatMul"\\n input: "rnn/basic_rnn_cell/bias/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "data_format"\\n value {\\n s: "NHWC"\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/Tanh"\\n op: "Tanh"\\n input: "rnn/basic_rnn_cell/BiasAdd"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/concat_1/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/concat_1"\\n op: "ConcatV2"\\n input: "Placeholder_1"\\n input: "rnn/basic_rnn_cell/Tanh"\\n input: "rnn/basic_rnn_cell/concat_1/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/MatMul_1"\\n op: "MatMul"\\n input: "rnn/basic_rnn_cell/concat_1"\\n input: "rnn/basic_rnn_cell/kernel/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "transpose_a"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "transpose_b"\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/BiasAdd_1"\\n op: "BiasAdd"\\n input: "rnn/basic_rnn_cell/MatMul_1"\\n input: "rnn/basic_rnn_cell/bias/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "data_format"\\n value {\\n s: "NHWC"\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/Tanh_1"\\n op: "Tanh"\\n input: "rnn/basic_rnn_cell/BiasAdd_1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "init"\\n op: "NoOp"\\n input: "^rnn/basic_rnn_cell/kernel/Assign"\\n input: "^rnn/basic_rnn_cell/bias/Assign"\\n}\\n';\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="graph0.3745401188473625"></tf-graph-basic>\n",
|
||
" </div>\n",
|
||
" \"></iframe>\n",
|
||
" "
|
||
],
|
||
"text/plain": [
|
||
"<IPython.core.display.HTML object>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"show_graph(tf.get_default_graph())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 시퀀스 패딩"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_steps = 2\n",
|
||
"n_inputs = 3\n",
|
||
"n_neurons = 5"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"X_seqs = tf.unstack(tf.transpose(X, perm=[1, 0, 2]))\n",
|
||
"\n",
|
||
"basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
"output_seqs, states = tf.contrib.rnn.static_rnn(basic_cell, X_seqs,\n",
|
||
" dtype=tf.float32)\n",
|
||
"outputs = tf.transpose(tf.stack(output_seqs), perm=[1, 0, 2])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_batch = np.array([\n",
|
||
" # t = 0 t = 1 \n",
|
||
" [[0, 1, 2], [9, 8, 7]], # 샘플 1\n",
|
||
" [[3, 4, 5], [0, 0, 0]], # 샘플 2\n",
|
||
" [[6, 7, 8], [6, 5, 4]], # 샘플 3\n",
|
||
" [[9, 0, 1], [3, 2, 1]], # 샘플 4\n",
|
||
" ])\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" outputs_val = outputs.eval(feed_dict={X: X_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[[-0.4565232 -0.6806412 0.40938237 0.631045 -0.45732823]\n",
|
||
" [-0.94288003 -0.9998869 0.9405581 0.99999845 -0.99999976]]\n",
|
||
"\n",
|
||
" [[-0.80015343 -0.99218273 0.78177965 0.9971032 -0.9964609 ]\n",
|
||
" [-0.637116 0.11300934 0.5798437 0.43105593 -0.6371699 ]]\n",
|
||
"\n",
|
||
" [[-0.93605185 -0.99983793 0.9308867 0.9999814 -0.99998313]\n",
|
||
" [-0.9165386 -0.99456036 0.89605415 0.9998719 -0.9999751 ]]\n",
|
||
"\n",
|
||
" [[ 0.99273676 -0.9981933 -0.5554365 0.99890316 -0.9953323 ]\n",
|
||
" [-0.02746333 -0.7319198 0.7827872 0.9525682 -0.9781772 ]]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(outputs_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[-0.94288003 -0.9998869 0.9405581 0.99999845 -0.99999976]\n",
|
||
" [-0.637116 0.11300934 0.5798437 0.43105593 -0.6371699 ]\n",
|
||
" [-0.9165386 -0.99456036 0.89605415 0.9998719 -0.9999751 ]\n",
|
||
" [-0.02746333 -0.7319198 0.7827872 0.9525682 -0.9781772 ]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(np.transpose(outputs_val, axes=[1, 0, 2])[1])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Using `dynamic_rnn()`"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_steps = 2\n",
|
||
"n_inputs = 3\n",
|
||
"n_neurons = 5"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"\n",
|
||
"basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_batch = np.array([\n",
|
||
" [[0, 1, 2], [9, 8, 7]], # instance 1\n",
|
||
" [[3, 4, 5], [0, 0, 0]], # instance 2\n",
|
||
" [[6, 7, 8], [6, 5, 4]], # instance 3\n",
|
||
" [[9, 0, 1], [3, 2, 1]], # instance 4\n",
|
||
" ])\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" outputs_val = outputs.eval(feed_dict={X: X_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[[-0.85115266 0.8735834 0.5802911 0.8954789 -0.0557505 ]\n",
|
||
" [-0.99999595 0.9999957 0.9981816 1. 0.37679613]]\n",
|
||
"\n",
|
||
" [[-0.99832934 0.9992038 0.98071444 0.99998486 0.25192654]\n",
|
||
" [-0.7081804 -0.07723369 -0.8522789 0.5845347 -0.7878094 ]]\n",
|
||
"\n",
|
||
" [[-0.9999826 0.9999953 0.99928635 1. 0.51590705]\n",
|
||
" [-0.9993956 0.9984095 0.83422637 0.9999998 -0.47325197]]\n",
|
||
"\n",
|
||
" [[ 0.87888587 0.07356028 0.9721692 0.9998546 -0.7351168 ]\n",
|
||
" [-0.9134514 0.3600957 0.7624865 0.99817705 0.80142 ]]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(outputs_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"\n",
|
||
" <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"\n",
|
||
" <script>\n",
|
||
" function load() {\n",
|
||
" document.getElementById("graph0.3745401188473625").pbtxt = 'node {\\n name: "Placeholder"\\n op: "Placeholder"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 2\\n }\\n dim {\\n size: 3\\n }\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/Rank"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/range/start"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 2\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/range/delta"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/range"\\n op: "Range"\\n input: "rnn/range/start"\\n input: "rnn/Rank"\\n input: "rnn/range/delta"\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat/values_0"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: "\\\\001\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat"\\n op: "ConcatV2"\\n input: "rnn/concat/values_0"\\n input: "rnn/range"\\n input: "rnn/concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/transpose"\\n op: "Transpose"\\n input: "Placeholder"\\n input: "rnn/concat"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "Tperm"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/Shape"\\n op: "Shape"\\n input: "rnn/transpose"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "out_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 2\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack_2"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice"\\n op: "StridedSlice"\\n input: "rnn/Shape"\\n input: "rnn/strided_slice/stack"\\n input: "rnn/strided_slice/stack_1"\\n input: "rnn/strided_slice/stack_2"\\n attr {\\n key: "Index"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "begin_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "ellipsis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "end_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "new_axis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "shrink_axis_mask"\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims/dim"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims"\\n op: "ExpandDims"\\n input: "rnn/strided_slice"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims/dim"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tdim"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/concat/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/concat"\\n op: "ConcatV2"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims"\\n input: "rnn/BasicRNNCellZeroState/Const"\\n input: "rnn/BasicRNNCellZeroState/concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/zeros/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/zeros"\\n op: "Fill"\\n input: "rnn/BasicRNNCellZeroState/concat"\\n input: "rnn/BasicRNNCellZeroState/zeros/Const"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "index_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims_1/dim"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims_1"\\n op: "ExpandDims"\\n input: "rnn/strided_slice"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims_1/dim"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tdim"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/Const_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/Shape_1"\\n op: "Shape"\\n input: "rnn/transpose"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "out_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_1/stack"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_1/stack_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_1/stack_2"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_1"\\n op: "StridedSlice"\\n input: "rnn/Shape_1"\\n input: "rnn/strided_slice_1/stack"\\n input: "rnn/strided_slice_1/stack_1"\\n input: "rnn/strided_slice_1/stack_2"\\n attr {\\n key: "Index"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "begin_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "ellipsis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "end_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "new_axis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "shrink_axis_mask"\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: "rnn/Shape_2"\\n op: "Shape"\\n input: "rnn/transpose"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "out_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_2/stack"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_2/stack_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 2\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_2/stack_2"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_2"\\n op: "StridedSlice"\\n input: "rnn/Shape_2"\\n input: "rnn/strided_slice_2/stack"\\n input: "rnn/strided_slice_2/stack_1"\\n input: "rnn/strided_slice_2/stack_2"\\n attr {\\n key: "Index"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "begin_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "ellipsis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "end_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "new_axis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "shrink_axis_mask"\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: "rnn/ExpandDims/dim"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/ExpandDims"\\n op: "ExpandDims"\\n input: "rnn/strided_slice_2"\\n input: "rnn/ExpandDims/dim"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tdim"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat_1/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat_1"\\n op: "ConcatV2"\\n input: "rnn/ExpandDims"\\n input: "rnn/Const"\\n input: "rnn/concat_1/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/zeros/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/zeros"\\n op: "Fill"\\n input: "rnn/concat_1"\\n input: "rnn/zeros/Const"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "index_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/time"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArray"\\n op: "TensorArrayV3"\\n input: "rnn/strided_slice_1"\\n attr {\\n key: "clear_after_read"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "dynamic_size"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "element_shape"\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: "identical_element_shapes"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "tensor_array_name"\\n value {\\n s: "rnn/dynamic_rnn/output_0"\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArray_1"\\n op: "TensorArrayV3"\\n input: "rnn/strided_slice_1"\\n attr {\\n key: "clear_after_read"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "dynamic_size"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "element_shape"\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 3\\n }\\n }\\n }\\n }\\n attr {\\n key: "identical_element_shapes"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "tensor_array_name"\\n value {\\n s: "rnn/dynamic_rnn/input_0"\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/Shape"\\n op: "Shape"\\n input: "rnn/transpose"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "out_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/strided_slice/stack"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/strided_slice/stack_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/strided_slice/stack_2"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/strided_slice"\\n op: "StridedSlice"\\n input: "rnn/TensorArrayUnstack/Shape"\\n input: "rnn/TensorArrayUnstack/strided_slice/stack"\\n input: "rnn/TensorArrayUnstack/strided_slice/stack_1"\\n input: "rnn/TensorArrayUnstack/strided_slice/stack_2"\\n attr {\\n key: "Index"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "begin_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "ellipsis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "end_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "new_axis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "shrink_axis_mask"\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/range/start"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/range/delta"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/range"\\n op: "Range"\\n input: "rnn/TensorArrayUnstack/range/start"\\n input: "rnn/TensorArrayUnstack/strided_slice"\\n input: "rnn/TensorArrayUnstack/range/delta"\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3"\\n op: "TensorArrayScatterV3"\\n input: "rnn/TensorArray_1"\\n input: "rnn/TensorArrayUnstack/range"\\n input: "rnn/transpose"\\n input: "rnn/TensorArray_1:1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/transpose"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/Maximum/x"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/Maximum"\\n op: "Maximum"\\n input: "rnn/Maximum/x"\\n input: "rnn/strided_slice_1"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/Minimum"\\n op: "Minimum"\\n input: "rnn/strided_slice_1"\\n input: "rnn/Maximum"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/iteration_counter"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Enter"\\n op: "Enter"\\n input: "rnn/while/iteration_counter"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/while_context"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Enter_1"\\n op: "Enter"\\n input: "rnn/time"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/while_context"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Enter_2"\\n op: "Enter"\\n input: "rnn/TensorArray:1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/while_context"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Enter_3"\\n op: "Enter"\\n input: "rnn/BasicRNNCellZeroState/zeros"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/while_context"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Merge"\\n op: "Merge"\\n input: "rnn/while/Enter"\\n input: "rnn/while/NextIteration"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Merge_1"\\n op: "Merge"\\n input: "rnn/while/Enter_1"\\n input: "rnn/while/NextIteration_1"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Merge_2"\\n op: "Merge"\\n input: "rnn/while/Enter_2"\\n input: "rnn/while/NextIteration_2"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Merge_3"\\n op: "Merge"\\n input: "rnn/while/Enter_3"\\n input: "rnn/while/NextIteration_3"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Less"\\n op: "Less"\\n input: "rnn/while/Merge"\\n input: "rnn/while/Less/Enter"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Less/Enter"\\n op: "Enter"\\n input: "rnn/strided_slice_1"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/while_context"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Less_1"\\n op: "Less"\\n input: "rnn/while/Merge_1"\\n input: "rnn/while/Less_1/Enter"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Less_1/Enter"\\n op: "Enter"\\n input: "rnn/Minimum"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/while_context"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/LogicalAnd"\\n op: "LogicalAnd"\\n input: "rnn/while/Less"\\n input: "rnn/while/Less_1"\\n}\\nnode {\\n name: "rnn/while/LoopCond"\\n op: "LoopCond"\\n input: "rnn/while/LogicalAnd"\\n}\\nnode {\\n name: "rnn/while/Switch"\\n op: "Switch"\\n input: "rnn/while/Merge"\\n input: "rnn/while/LoopCond"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/while/Merge"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Switch_1"\\n op: "Switch"\\n input: "rnn/while/Merge_1"\\n input: "rnn/while/LoopCond"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/while/Merge_1"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Switch_2"\\n op: "Switch"\\n input: "rnn/while/Merge_2"\\n input: "rnn/while/LoopCond"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/while/Merge_2"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Switch_3"\\n op: "Switch"\\n input: "rnn/while/Merge_3"\\n input: "rnn/while/LoopCond"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/while/Merge_3"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Identity"\\n op: "Identity"\\n input: "rnn/while/Switch:1"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Identity_1"\\n op: "Identity"\\n input: "rnn/while/Switch_1:1"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Identity_2"\\n op: "Identity"\\n input: "rnn/while/Switch_2:1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Identity_3"\\n op: "Identity"\\n input: "rnn/while/Switch_3:1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/add/y"\\n op: "Const"\\n input: "^rnn/while/Identity"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/add"\\n op: "Add"\\n input: "rnn/while/Identity"\\n input: "rnn/while/add/y"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/TensorArrayReadV3"\\n op: "TensorArrayReadV3"\\n input: "rnn/while/TensorArrayReadV3/Enter"\\n input: "rnn/while/Identity_1"\\n input: "rnn/while/TensorArrayReadV3/Enter_1"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/TensorArrayReadV3/Enter"\\n op: "Enter"\\n input: "rnn/TensorArray_1"\\n attr {\\n key: "T"\\n value {\\n type: DT_RESOURCE\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/while_context"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/TensorArrayReadV3/Enter_1"\\n op: "Enter"\\n input: "rnn/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/while_context"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: "\\\\010\\\\000\\\\000\\\\000\\\\005\\\\000\\\\000\\\\000"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: -0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform"\\n op: "RandomUniform"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "seed"\\n value {\\n i: 42\\n }\\n }\\n attr {\\n key: "seed2"\\n value {\\n i: 87\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub"\\n op: "Sub"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul"\\n op: "Mul"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform"\\n op: "Add"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel"\\n op: "VariableV2"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "container"\\n value {\\n s: ""\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: 8\\n }\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: "shared_name"\\n value {\\n s: ""\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Assign"\\n op: "Assign"\\n input: "rnn/basic_rnn_cell/kernel"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "use_locking"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "validate_shape"\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/read"\\n op: "Identity"\\n input: "rnn/basic_rnn_cell/kernel"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Initializer/zeros/shape_as_tensor"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Initializer/zeros/Const"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Initializer/zeros"\\n op: "Fill"\\n input: "rnn/basic_rnn_cell/bias/Initializer/zeros/shape_as_tensor"\\n input: "rnn/basic_rnn_cell/bias/Initializer/zeros/Const"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "index_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias"\\n op: "VariableV2"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "container"\\n value {\\n s: ""\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: "shared_name"\\n value {\\n s: ""\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Assign"\\n op: "Assign"\\n input: "rnn/basic_rnn_cell/bias"\\n input: "rnn/basic_rnn_cell/bias/Initializer/zeros"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "use_locking"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "validate_shape"\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/read"\\n op: "Identity"\\n input: "rnn/basic_rnn_cell/bias"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/basic_rnn_cell/concat/axis"\\n op: "Const"\\n input: "^rnn/while/Identity"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/basic_rnn_cell/concat"\\n op: "ConcatV2"\\n input: "rnn/while/TensorArrayReadV3"\\n input: "rnn/while/Identity_3"\\n input: "rnn/while/basic_rnn_cell/concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/basic_rnn_cell/MatMul"\\n op: "MatMul"\\n input: "rnn/while/basic_rnn_cell/concat"\\n input: "rnn/while/basic_rnn_cell/MatMul/Enter"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "transpose_a"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "transpose_b"\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/basic_rnn_cell/MatMul/Enter"\\n op: "Enter"\\n input: "rnn/basic_rnn_cell/kernel/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/while_context"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/basic_rnn_cell/BiasAdd"\\n op: "BiasAdd"\\n input: "rnn/while/basic_rnn_cell/MatMul"\\n input: "rnn/while/basic_rnn_cell/BiasAdd/Enter"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "data_format"\\n value {\\n s: "NHWC"\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/basic_rnn_cell/BiasAdd/Enter"\\n op: "Enter"\\n input: "rnn/basic_rnn_cell/bias/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/while_context"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/basic_rnn_cell/Tanh"\\n op: "Tanh"\\n input: "rnn/while/basic_rnn_cell/BiasAdd"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/TensorArrayWrite/TensorArrayWriteV3"\\n op: "TensorArrayWriteV3"\\n input: "rnn/while/TensorArrayWrite/TensorArrayWriteV3/Enter"\\n input: "rnn/while/Identity_1"\\n input: "rnn/while/basic_rnn_cell/Tanh"\\n input: "rnn/while/Identity_2"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/while/basic_rnn_cell/Tanh"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/TensorArrayWrite/TensorArrayWriteV3/Enter"\\n op: "Enter"\\n input: "rnn/TensorArray"\\n attr {\\n key: "T"\\n value {\\n type: DT_RESOURCE\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/while/basic_rnn_cell/Tanh"\\n }\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/while_context"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/add_1/y"\\n op: "Const"\\n input: "^rnn/while/Identity"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/add_1"\\n op: "Add"\\n input: "rnn/while/Identity_1"\\n input: "rnn/while/add_1/y"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/NextIteration"\\n op: "NextIteration"\\n input: "rnn/while/add"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/NextIteration_1"\\n op: "NextIteration"\\n input: "rnn/while/add_1"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/NextIteration_2"\\n op: "NextIteration"\\n input: "rnn/while/TensorArrayWrite/TensorArrayWriteV3"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/NextIteration_3"\\n op: "NextIteration"\\n input: "rnn/while/basic_rnn_cell/Tanh"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Exit"\\n op: "Exit"\\n input: "rnn/while/Switch"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Exit_1"\\n op: "Exit"\\n input: "rnn/while/Switch_1"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Exit_2"\\n op: "Exit"\\n input: "rnn/while/Switch_2"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Exit_3"\\n op: "Exit"\\n input: "rnn/while/Switch_3"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayStack/TensorArraySizeV3"\\n op: "TensorArraySizeV3"\\n input: "rnn/TensorArray"\\n input: "rnn/while/Exit_2"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/TensorArray"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayStack/range/start"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/TensorArray"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayStack/range/delta"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/TensorArray"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayStack/range"\\n op: "Range"\\n input: "rnn/TensorArrayStack/range/start"\\n input: "rnn/TensorArrayStack/TensorArraySizeV3"\\n input: "rnn/TensorArrayStack/range/delta"\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/TensorArray"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayStack/TensorArrayGatherV3"\\n op: "TensorArrayGatherV3"\\n input: "rnn/TensorArray"\\n input: "rnn/TensorArrayStack/range"\\n input: "rnn/while/Exit_2"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/TensorArray"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "element_shape"\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/Const_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/Rank_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/range_1/start"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 2\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/range_1/delta"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/range_1"\\n op: "Range"\\n input: "rnn/range_1/start"\\n input: "rnn/Rank_1"\\n input: "rnn/range_1/delta"\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat_2/values_0"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: "\\\\001\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat_2/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat_2"\\n op: "ConcatV2"\\n input: "rnn/concat_2/values_0"\\n input: "rnn/range_1"\\n input: "rnn/concat_2/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/transpose_1"\\n op: "Transpose"\\n input: "rnn/TensorArrayStack/TensorArrayGatherV3"\\n input: "rnn/concat_2"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "Tperm"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "init"\\n op: "NoOp"\\n input: "^rnn/basic_rnn_cell/kernel/Assign"\\n input: "^rnn/basic_rnn_cell/bias/Assign"\\n}\\n';\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="graph0.3745401188473625"></tf-graph-basic>\n",
|
||
" </div>\n",
|
||
" \"></iframe>\n",
|
||
" "
|
||
],
|
||
"text/plain": [
|
||
"<IPython.core.display.HTML object>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"show_graph(tf.get_default_graph())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 시퀀스 길이 지정"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 28,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_steps = 2\n",
|
||
"n_inputs = 3\n",
|
||
"n_neurons = 5\n",
|
||
"\n",
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"seq_length = tf.placeholder(tf.int32, [None])\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32,\n",
|
||
" sequence_length=seq_length)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_batch = np.array([\n",
|
||
" # 스텝 0 스텝 1\n",
|
||
" [[0, 1, 2], [9, 8, 7]], # 샘플 1\n",
|
||
" [[3, 4, 5], [0, 0, 0]], # 샘플 2 (0 벡터로 패딩)\n",
|
||
" [[6, 7, 8], [6, 5, 4]], # 샘플 3\n",
|
||
" [[9, 0, 1], [3, 2, 1]], # 샘플 4\n",
|
||
" ])\n",
|
||
"seq_length_batch = np.array([2, 1, 2, 2])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 32,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" outputs_val, states_val = sess.run(\n",
|
||
" [outputs, states], feed_dict={X: X_batch, seq_length: seq_length_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 33,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[[-0.91231877 0.16516447 0.5548655 -0.3915935 0.20846416]\n",
|
||
" [-1. 0.95672596 0.9983169 0.9997017 0.96518576]]\n",
|
||
"\n",
|
||
" [[-0.99986124 0.67022896 0.9723652 0.66310453 0.74457586]\n",
|
||
" [ 0. 0. 0. 0. 0. ]]\n",
|
||
"\n",
|
||
" [[-0.99999976 0.89679974 0.9986295 0.96475154 0.93662006]\n",
|
||
" [-0.99995255 0.96819544 0.9600286 0.9870626 0.8545923 ]]\n",
|
||
"\n",
|
||
" [[-0.9643544 0.9950159 -0.361507 0.99833775 0.99949706]\n",
|
||
" [-0.9613586 0.9568762 0.71322876 0.9772921 -0.09582992]]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(outputs_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 34,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[-1. 0.95672596 0.9983169 0.9997017 0.96518576]\n",
|
||
" [-0.99986124 0.67022896 0.9723652 0.66310453 0.74457586]\n",
|
||
" [-0.99995255 0.96819544 0.9600286 0.9870626 0.8545923 ]\n",
|
||
" [-0.9613586 0.9568762 0.71322876 0.9772921 -0.09582992]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(states_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 시퀀스 분류기 훈련하기"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 35,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 28\n",
|
||
"n_inputs = 28\n",
|
||
"n_neurons = 150\n",
|
||
"n_outputs = 10\n",
|
||
"\n",
|
||
"learning_rate = 0.001\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.int32, [None])\n",
|
||
"\n",
|
||
"basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32)\n",
|
||
"\n",
|
||
"logits = tf.layers.dense(states, n_outputs)\n",
|
||
"xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y,\n",
|
||
" logits=logits)\n",
|
||
"loss = tf.reduce_mean(xentropy)\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"correct = tf.nn.in_top_k(logits, y, 1)\n",
|
||
"accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 36,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"WARNING:tensorflow:From <ipython-input-36-9aff0e2313ad>:2: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
|
||
"Instructions for updating:\n",
|
||
"Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
|
||
"WARNING:tensorflow:From /home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
|
||
"Instructions for updating:\n",
|
||
"Please write your own downloading logic.\n",
|
||
"WARNING:tensorflow:From /home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
|
||
"Instructions for updating:\n",
|
||
"Please use tf.data to implement this functionality.\n",
|
||
"Extracting /tmp/data/train-images-idx3-ubyte.gz\n",
|
||
"WARNING:tensorflow:From /home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
|
||
"Instructions for updating:\n",
|
||
"Please use tf.data to implement this functionality.\n",
|
||
"Extracting /tmp/data/train-labels-idx1-ubyte.gz\n",
|
||
"Extracting /tmp/data/t10k-images-idx3-ubyte.gz\n",
|
||
"Extracting /tmp/data/t10k-labels-idx1-ubyte.gz\n",
|
||
"WARNING:tensorflow:From /home/haesun/anaconda3/envs/handson-ml/lib/python3.5/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
|
||
"Instructions for updating:\n",
|
||
"Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n"
|
||
]
|
||
}
|
||
],
|
||
"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"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 37,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0 훈련 정확도: 0.92 테스트 정확도: 0.9272\n",
|
||
"1 훈련 정확도: 0.97333336 테스트 정확도: 0.9524\n",
|
||
"2 훈련 정확도: 0.9266667 테스트 정확도: 0.9593\n",
|
||
"3 훈련 정확도: 0.97333336 테스트 정확도: 0.9604\n",
|
||
"4 훈련 정확도: 0.96666664 테스트 정확도: 0.9627\n",
|
||
"5 훈련 정확도: 0.94666666 테스트 정확도: 0.9626\n",
|
||
"6 훈련 정확도: 0.97333336 테스트 정확도: 0.9698\n",
|
||
"7 훈련 정확도: 0.96666664 테스트 정확도: 0.9719\n",
|
||
"8 훈련 정확도: 0.9533333 테스트 정확도: 0.9696\n",
|
||
"9 훈련 정확도: 0.96666664 테스트 정확도: 0.9725\n",
|
||
"10 훈련 정확도: 0.97333336 테스트 정확도: 0.9561\n",
|
||
"11 훈련 정확도: 0.94666666 테스트 정확도: 0.9703\n",
|
||
"12 훈련 정확도: 0.9866667 테스트 정확도: 0.9712\n",
|
||
"13 훈련 정확도: 0.9866667 테스트 정확도: 0.974\n",
|
||
"14 훈련 정확도: 0.96 테스트 정확도: 0.9664\n",
|
||
"15 훈련 정확도: 0.99333334 테스트 정확도: 0.9743\n",
|
||
"16 훈련 정확도: 0.9866667 테스트 정확도: 0.975\n",
|
||
"17 훈련 정확도: 0.98 테스트 정확도: 0.9674\n",
|
||
"18 훈련 정확도: 0.96666664 테스트 정확도: 0.974\n",
|
||
"19 훈련 정확도: 0.97333336 테스트 정확도: 0.9766\n",
|
||
"20 훈련 정확도: 0.98 테스트 정확도: 0.9719\n",
|
||
"21 훈련 정확도: 0.9866667 테스트 정확도: 0.9701\n",
|
||
"22 훈련 정확도: 0.97333336 테스트 정확도: 0.9736\n",
|
||
"23 훈련 정확도: 0.97333336 테스트 정확도: 0.976\n",
|
||
"24 훈련 정확도: 0.9866667 테스트 정확도: 0.9773\n",
|
||
"25 훈련 정확도: 1.0 테스트 정확도: 0.9733\n",
|
||
"26 훈련 정확도: 0.96666664 테스트 정확도: 0.9741\n",
|
||
"27 훈련 정확도: 0.99333334 테스트 정확도: 0.9796\n",
|
||
"28 훈련 정확도: 0.96666664 테스트 정확도: 0.9712\n",
|
||
"29 훈련 정확도: 0.99333334 테스트 정확도: 0.9756\n",
|
||
"30 훈련 정확도: 0.98 테스트 정확도: 0.9767\n",
|
||
"31 훈련 정확도: 0.99333334 테스트 정확도: 0.9756\n",
|
||
"32 훈련 정확도: 0.9866667 테스트 정확도: 0.9754\n",
|
||
"33 훈련 정확도: 0.99333334 테스트 정확도: 0.9769\n",
|
||
"34 훈련 정확도: 0.99333334 테스트 정확도: 0.9787\n",
|
||
"35 훈련 정확도: 1.0 테스트 정확도: 0.9738\n",
|
||
"36 훈련 정확도: 1.0 테스트 정확도: 0.9781\n",
|
||
"37 훈련 정확도: 1.0 테스트 정확도: 0.9743\n",
|
||
"38 훈련 정확도: 0.9866667 테스트 정확도: 0.9763\n",
|
||
"39 훈련 정확도: 1.0 테스트 정확도: 0.9745\n",
|
||
"40 훈련 정확도: 1.0 테스트 정확도: 0.976\n",
|
||
"41 훈련 정확도: 0.9866667 테스트 정확도: 0.9739\n",
|
||
"42 훈련 정확도: 0.99333334 테스트 정확도: 0.9743\n",
|
||
"43 훈련 정확도: 0.99333334 테스트 정확도: 0.9782\n",
|
||
"44 훈련 정확도: 0.97333336 테스트 정확도: 0.9773\n",
|
||
"45 훈련 정확도: 0.99333334 테스트 정확도: 0.9779\n",
|
||
"46 훈련 정확도: 0.99333334 테스트 정확도: 0.9733\n",
|
||
"47 훈련 정확도: 1.0 테스트 정확도: 0.9797\n",
|
||
"48 훈련 정확도: 0.9866667 테스트 정확도: 0.9776\n",
|
||
"49 훈련 정확도: 0.99333334 테스트 정확도: 0.9785\n",
|
||
"50 훈련 정확도: 0.99333334 테스트 정확도: 0.9779\n",
|
||
"51 훈련 정확도: 0.99333334 테스트 정확도: 0.9802\n",
|
||
"52 훈련 정확도: 1.0 테스트 정확도: 0.9758\n",
|
||
"53 훈련 정확도: 0.99333334 테스트 정확도: 0.9785\n",
|
||
"54 훈련 정확도: 1.0 테스트 정확도: 0.9793\n",
|
||
"55 훈련 정확도: 0.98 테스트 정확도: 0.979\n",
|
||
"56 훈련 정확도: 1.0 테스트 정확도: 0.976\n",
|
||
"57 훈련 정확도: 1.0 테스트 정확도: 0.9799\n",
|
||
"58 훈련 정확도: 0.9866667 테스트 정확도: 0.9761\n",
|
||
"59 훈련 정확도: 1.0 테스트 정확도: 0.9758\n",
|
||
"60 훈련 정확도: 1.0 테스트 정확도: 0.9782\n",
|
||
"61 훈련 정확도: 1.0 테스트 정확도: 0.9792\n",
|
||
"62 훈련 정확도: 0.99333334 테스트 정확도: 0.98\n",
|
||
"63 훈련 정확도: 0.99333334 테스트 정확도: 0.9723\n",
|
||
"64 훈련 정확도: 1.0 테스트 정확도: 0.9718\n",
|
||
"65 훈련 정확도: 0.99333334 테스트 정확도: 0.9819\n",
|
||
"66 훈련 정확도: 0.99333334 테스트 정확도: 0.9777\n",
|
||
"67 훈련 정확도: 0.99333334 테스트 정확도: 0.977\n",
|
||
"68 훈련 정확도: 0.9866667 테스트 정확도: 0.9786\n",
|
||
"69 훈련 정확도: 1.0 테스트 정확도: 0.9786\n",
|
||
"70 훈련 정확도: 0.9866667 테스트 정확도: 0.9749\n",
|
||
"71 훈련 정확도: 1.0 테스트 정확도: 0.975\n",
|
||
"72 훈련 정확도: 1.0 테스트 정확도: 0.9745\n",
|
||
"73 훈련 정확도: 1.0 테스트 정확도: 0.9782\n",
|
||
"74 훈련 정확도: 0.99333334 테스트 정확도: 0.9769\n",
|
||
"75 훈련 정확도: 0.9866667 테스트 정확도: 0.9811\n",
|
||
"76 훈련 정확도: 0.99333334 테스트 정확도: 0.9757\n",
|
||
"77 훈련 정확도: 1.0 테스트 정확도: 0.9795\n",
|
||
"78 훈련 정확도: 0.9866667 테스트 정확도: 0.9741\n",
|
||
"79 훈련 정확도: 0.98 테스트 정확도: 0.9747\n",
|
||
"80 훈련 정확도: 1.0 테스트 정확도: 0.9783\n",
|
||
"81 훈련 정확도: 0.98 테스트 정확도: 0.9773\n",
|
||
"82 훈련 정확도: 0.98 테스트 정확도: 0.9764\n",
|
||
"83 훈련 정확도: 1.0 테스트 정확도: 0.9763\n",
|
||
"84 훈련 정확도: 1.0 테스트 정확도: 0.9801\n",
|
||
"85 훈련 정확도: 1.0 테스트 정확도: 0.9744\n",
|
||
"86 훈련 정확도: 0.99333334 테스트 정확도: 0.9785\n",
|
||
"87 훈련 정확도: 0.98 테스트 정확도: 0.9765\n",
|
||
"88 훈련 정확도: 0.99333334 테스트 정확도: 0.9731\n",
|
||
"89 훈련 정확도: 0.99333334 테스트 정확도: 0.9707\n",
|
||
"90 훈련 정확도: 1.0 테스트 정확도: 0.9766\n",
|
||
"91 훈련 정확도: 0.99333334 테스트 정확도: 0.9765\n",
|
||
"92 훈련 정확도: 0.99333334 테스트 정확도: 0.9737\n",
|
||
"93 훈련 정확도: 1.0 테스트 정확도: 0.9805\n",
|
||
"94 훈련 정확도: 1.0 테스트 정확도: 0.9753\n",
|
||
"95 훈련 정확도: 1.0 테스트 정확도: 0.977\n",
|
||
"96 훈련 정확도: 0.99333334 테스트 정확도: 0.9754\n",
|
||
"97 훈련 정확도: 1.0 테스트 정확도: 0.9759\n",
|
||
"98 훈련 정확도: 0.9866667 테스트 정확도: 0.9771\n",
|
||
"99 훈련 정확도: 0.99333334 테스트 정확도: 0.9797\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_epochs = 100\n",
|
||
"batch_size = 150\n",
|
||
"\n",
|
||
"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",
|
||
" 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_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
|
||
" print(epoch, \"훈련 정확도:\", acc_train, \"테스트 정확도:\", acc_test)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 다층 RNN"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 38,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 28\n",
|
||
"n_inputs = 28\n",
|
||
"n_outputs = 10\n",
|
||
"\n",
|
||
"learning_rate = 0.001\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.int32, [None])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 39,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_neurons = 100\n",
|
||
"n_layers = 3\n",
|
||
"\n",
|
||
"layers = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons,\n",
|
||
" activation=tf.nn.relu)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 40,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"states_concat = tf.concat(axis=1, values=states)\n",
|
||
"logits = tf.layers.dense(states_concat, n_outputs)\n",
|
||
"xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)\n",
|
||
"loss = tf.reduce_mean(xentropy)\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"correct = tf.nn.in_top_k(logits, y, 1)\n",
|
||
"accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 41,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0 훈련 정확도: 0.9533333 테스트 정확도: 0.9376\n",
|
||
"1 훈련 정확도: 0.97333336 테스트 정확도: 0.9602\n",
|
||
"2 훈련 정확도: 0.96666664 테스트 정확도: 0.9594\n",
|
||
"3 훈련 정확도: 0.97333336 테스트 정확도: 0.9688\n",
|
||
"4 훈련 정확도: 0.99333334 테스트 정확도: 0.9763\n",
|
||
"5 훈련 정확도: 0.98 테스트 정확도: 0.9742\n",
|
||
"6 훈련 정확도: 0.99333334 테스트 정확도: 0.9779\n",
|
||
"7 훈련 정확도: 0.97333336 테스트 정확도: 0.9773\n",
|
||
"8 훈련 정확도: 0.9866667 테스트 정확도: 0.9729\n",
|
||
"9 훈련 정확도: 0.9866667 테스트 정확도: 0.9822\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_epochs = 10\n",
|
||
"batch_size = 150\n",
|
||
"\n",
|
||
"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",
|
||
" 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_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
|
||
" print(epoch, \"훈련 정확도:\", acc_train, \"테스트 정확도:\", acc_test)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 시계열"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 42,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"t_min, t_max = 0, 30\n",
|
||
"resolution = 0.1\n",
|
||
"\n",
|
||
"def time_series(t):\n",
|
||
" return t * np.sin(t) / 3 + 2 * np.sin(t*5)\n",
|
||
"\n",
|
||
"def next_batch(batch_size, n_steps):\n",
|
||
" t0 = np.random.rand(batch_size, 1) * (t_max - t_min - n_steps * resolution)\n",
|
||
" Ts = t0 + np.arange(0., n_steps + 1) * resolution\n",
|
||
" ys = time_series(Ts)\n",
|
||
" return ys[:, :-1].reshape(-1, n_steps, 1), ys[:, 1:].reshape(-1, n_steps, 1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 43,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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Nm2iqqqKCRMmEBra8C328MMP8+yzz/Ldd98xfPhwj89Pa1atWtXg9uuvv06XLl349ttvmTFjhkeP4Y3zCRAaGup21AHO7XwL0R59UmOwa8grqmBA11izuyOEEMIPmL0GQjiEhITw3XfG4MuGDRs4duwYa9eubba9zWbjyiuvZMKECWzfvp0NGzZw5513EhIS0ux93nzzTUJDQ1m3bh1///vf+etf/8o777zj2v/NN98wevToBhW8W+rX2LFj2bhxI5WVDXPIL1++nGnTpjUJHurq6li6dCllZWVceOGFHp6Zc3PmzBnsdjsJCQketffW+QQ4cOAAPXr0oHfv3sydO5cDBw649p3L+RaiPbKSowE4IOsgOt2SJWb3QAghOkZQjEC0ZSTALBaLhWPHjhEbG8uYMWOafOlsrLS0lJKSEmbMmOGaXz9w4MAW7zN48GD++Mc/AtC/f39eeOEFvvjiC6677joA8vLy6Natm8f96t69O7W1tRw9erTBmokVK1bw4IMPum7/8MMPjBs3jqqqKmJiYnjvvfcYNmyYB2fl3N15552MHDmScePGedTeW+fz/PPP55VXXmHgwIGcPHmShx56iAsvvJBdu3aRlJR0TudbiPbISjECCOdC6l1HZZ1NR9EaNm6EJ5+EDz+EoUNh0SKYPt24HjMGWvmoF0IInyQjED5k69atjBgxotXgASAxMZEFCxYwZcoUpk2bxp///GcOHz7c4n0aTxnq3r07J0+edN2urKzEarV63K/IyEjX/ZxycnI4cOAAU6ZMcW0bMGAA27ZtY/369SxcuJD58+c3u8D5kUceISYmxnV58803m2z75ptvWjzO3/72t6xdu5Zly5a1OIJQn7fO5xVXXME111zD8OHDueSSS/jggw+w2+28+uqrrjZtOd9CtFdUeCi9kqLYesjIXfHeliMm9ygw1NbC9dfDxRfDu+9Cejp8/LFxvWyZsf366412QgjhbySA8CHbtm1j1KhRHrd/+eWX2bBhAxdddBHvv/8+/fv3b7IWoL6wsLAGt5VS2O121+3k5GSKi4s97pdzgXJKSopr2/Lly5k8eTLR0dGubeHh4fTt25fs7GweffRRRo4cyV/+8he3fbz99tvZtm2b6zJz5swm27Kzs5s9xrvuuou3336bL7/8kqysJgXNW+St81lfTEwMQ4YMYd++fa5tbTnfQnSE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\n",
|
||
"text/plain": [
|
||
"<Figure size 792x288 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"t = np.linspace(t_min, t_max, int((t_max - t_min) / resolution))\n",
|
||
"\n",
|
||
"n_steps = 20\n",
|
||
"t_instance = np.linspace(12.2, 12.2 + resolution * (n_steps + 1), n_steps + 1)\n",
|
||
"\n",
|
||
"plt.figure(figsize=(11,4))\n",
|
||
"plt.subplot(121)\n",
|
||
"plt.title(\"시계열 데이터 (인공 생성)\", fontsize=14)\n",
|
||
"plt.plot(t, time_series(t), label=r\"$t . \\sin(t) / 3 + 2 . \\sin(5t)$\")\n",
|
||
"plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"b-\", linewidth=3, label=\"훈련 샘플\")\n",
|
||
"plt.legend(loc=\"lower left\", fontsize=14)\n",
|
||
"plt.axis([0, 30, -17, 13])\n",
|
||
"plt.xlabel(\"시간\")\n",
|
||
"plt.ylabel(\"값\", rotation=0)\n",
|
||
"\n",
|
||
"plt.subplot(122)\n",
|
||
"plt.title(\"훈련 샘플\", fontsize=14)\n",
|
||
"plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=12, label=\"샘플\")\n",
|
||
"plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markeredgewidth=0.5, markeredgecolor=\"b\", markersize=14, label=\"타깃\")\n",
|
||
"plt.legend(loc=\"upper left\")\n",
|
||
"plt.xlabel(\"시간\")\n",
|
||
"\n",
|
||
"\n",
|
||
"save_fig(\"time_series_plot\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 44,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_batch, y_batch = next_batch(1, n_steps)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 45,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[ 1.38452097, 2.05081182],\n",
|
||
" [ 2.05081182, 2.29742291],\n",
|
||
" [ 2.29742291, 2.0465599 ],\n",
|
||
" [ 2.0465599 , 1.34009916],\n",
|
||
" [ 1.34009916, 0.32948704],\n",
|
||
" [ 0.32948704, -0.76115235],\n",
|
||
" [-0.76115235, -1.68967022],\n",
|
||
" [-1.68967022, -2.25492776],\n",
|
||
" [-2.25492776, -2.34576159],\n",
|
||
" [-2.34576159, -1.96789418],\n",
|
||
" [-1.96789418, -1.24220428],\n",
|
||
" [-1.24220428, -0.37478448],\n",
|
||
" [-0.37478448, 0.39387907],\n",
|
||
" [ 0.39387907, 0.84815766],\n",
|
||
" [ 0.84815766, 0.85045064],\n",
|
||
" [ 0.85045064, 0.3752526 ],\n",
|
||
" [ 0.3752526 , -0.48422846],\n",
|
||
" [-0.48422846, -1.53852738],\n",
|
||
" [-1.53852738, -2.54795941],\n",
|
||
" [-2.54795941, -3.28097239]])"
|
||
]
|
||
},
|
||
"execution_count": 45,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"np.c_[X_batch[0], y_batch[0]]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## `OuputProjectionWrapper` 사용하기"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"RNN 하나를 만들어 보겠습니다. 이 신경망은 100개의 순환 뉴런을 가지고 있고 각 훈련 샘플은 20개의 입력 길이로 구성되므로 20개의 타임 스텝에 펼칠 것입니다. 각 입력은 하나의 특성을 가집니다(각 시간에서의 값 하나). 타깃도 20개의 입력 시퀀스이고 하나의 값을 가집니다:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 46,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 20\n",
|
||
"n_inputs = 1\n",
|
||
"n_neurons = 100\n",
|
||
"n_outputs = 1\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])\n",
|
||
"\n",
|
||
"cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"각 타임 스텝에서 크기가 100인 출력 벡터가 만들어 집니다. 하지만 각 타임 스텝에서 하나의 출력 값을 원합니다. 간단한 방법은 `OutputProjectionWrapper`로 셀을 감싸는 것입니다."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 47,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 20\n",
|
||
"n_inputs = 1\n",
|
||
"n_neurons = 100\n",
|
||
"n_outputs = 1\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 48,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"cell = tf.contrib.rnn.OutputProjectionWrapper(\n",
|
||
" tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu),\n",
|
||
" output_size=n_outputs)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 49,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 50,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"learning_rate = 0.001\n",
|
||
"\n",
|
||
"loss = tf.reduce_mean(tf.square(outputs - y)) # MSE\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 51,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"saver = tf.train.Saver()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 52,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0 \tMSE: 11.234554\n",
|
||
"100 \tMSE: 0.38021186\n",
|
||
"200 \tMSE: 0.12111329\n",
|
||
"300 \tMSE: 0.06443737\n",
|
||
"400 \tMSE: 0.05846016\n",
|
||
"500 \tMSE: 0.056370605\n",
|
||
"600 \tMSE: 0.05040648\n",
|
||
"700 \tMSE: 0.045476887\n",
|
||
"800 \tMSE: 0.04885428\n",
|
||
"900 \tMSE: 0.046516392\n",
|
||
"1000 \tMSE: 0.046919473\n",
|
||
"1100 \tMSE: 0.04594408\n",
|
||
"1200 \tMSE: 0.03982782\n",
|
||
"1300 \tMSE: 0.046534885\n",
|
||
"1400 \tMSE: 0.04091823\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_iterations = 1500\n",
|
||
"batch_size = 50\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" for iteration in range(n_iterations):\n",
|
||
" X_batch, y_batch = next_batch(batch_size, n_steps)\n",
|
||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||
" if iteration % 100 == 0:\n",
|
||
" mse = loss.eval(feed_dict={X: X_batch, y: y_batch})\n",
|
||
" print(iteration, \"\\tMSE:\", mse)\n",
|
||
" \n",
|
||
" saver.save(sess, \"./my_time_series_model\") # not shown in the book"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 53,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:tensorflow:Restoring parameters from ./my_time_series_model\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"with tf.Session() as sess: # 책에는 없음\n",
|
||
" saver.restore(sess, \"./my_time_series_model\") # 책에는 없음\n",
|
||
"\n",
|
||
" X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_new})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 54,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[[-3.3843877 ],\n",
|
||
" [-2.442578 ],\n",
|
||
" [-1.1406771 ],\n",
|
||
" [ 0.70999134],\n",
|
||
" [ 2.169664 ],\n",
|
||
" [ 3.0662253 ],\n",
|
||
" [ 3.4722242 ],\n",
|
||
" [ 3.3540928 ],\n",
|
||
" [ 2.83155 ],\n",
|
||
" [ 2.201286 ],\n",
|
||
" [ 1.7171311 ],\n",
|
||
" [ 1.5864581 ],\n",
|
||
" [ 1.9358639 ],\n",
|
||
" [ 2.733486 ],\n",
|
||
" [ 3.8900287 ],\n",
|
||
" [ 5.1092954 ],\n",
|
||
" [ 6.122177 ],\n",
|
||
" [ 6.665222 ],\n",
|
||
" [ 6.6429915 ],\n",
|
||
" [ 6.080037 ]]], dtype=float32)"
|
||
]
|
||
},
|
||
"execution_count": 54,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"y_pred"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 55,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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/OQn3b+AiPRJZmGSgGnT4I47wpioPXvCsR07QoupoiL8Qb1sWWYN0h02LPxeJ5zQfP8558DYsaE3s7fEPQ4qet9pXALq0qamdMfnngvbBQvazn45eDB8MEpKjkT57mqvBXX99dczdepU7r//flatWsWjjz7KsGHDenYREemTemN6oXRw1VXtHzvhhI6PxytjZpI499zQivrHf4Row6aZm28Ob1TLKB+PDz/8EIABAwawefNmTjzxRH75y1+Sk5PDI488wplnnpm4i4lIxrv66rDtrbTrbJMxAQpCU3PAgLaPDRhA3OmODz74IOvWrcOi7e9Pf/rTjBkzBoBzYj5xe/bs4Vvf+hZjx45lwoQJWvJdRKQXZMSS701+/3v47GfDz+++C9dcE7YAf/d3xJXueNlll/H+++/z6quv8sorr/DKK6/ws5/9rFW59957j/POO49FixYxf/58Nm3axODBg3t+YRERaVNGBajD6Y7PhRuNt90Gjz8eskl6O90R4Fvf+hZz5szh1ltv5etf/zrPPPMMP/jBDzjzzDM5dOhQ715cRCTLZMxyGxASJPr1C+mOsX28zz8P//7vId3xjjsSXeMj6urqyG3jDmd7+7XchohIa31uuQ1Ibboj0GYQ6mi/iIj0XEZ18XWUpdfb6Y4ikj20UkJ6yKgAJSLSG9yhujqMYxo4EJYuDdtZs8JMNkm+EyJRClAiktXq6sJy7ZMnw/MrGvjyoLWsn7KILw9ay3M/a2Dy5HC8ri7VNc0+ClAikrXcwxpOq1fDgf0NVPo07t91EQPvvoX7d11EpU+jtqaBVatCObWkkksBqgOnn346O3fuZMSIEYf3Pfnkk4dnPJ83b14Kayci8dq4Mcybt38/lFPJRKrJr98H7uTX72Mi1ZRTSW1tKPfaa6mucXbJzADV0ABr14bpgteuDc/jVFtby9lnn82oUaO466672ixz++2389BDD5GXl0deXh7bt29nfibNmy8ihz38cBi6UloKkybBucM3M5Dmy5oPpIZzh29h0qRQ7sYbw+skSdw9qY9x48Z5S2+99Varfe2qr3efMsW9sNDdLGynTAn747B06VK/7bbb/NChQz5y5EgvKyvzT3ziE/7+++/7iSee6O7uDQ0NXldX53v27PEf/vCHPn36dH///ffbPWe3fi8RSaqDB91HjHBfsiS6Y82a8H0SevLC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\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.title(\"모델 테스트\", fontsize=14)\n",
|
||
"plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=12, label=\"샘플\")\n",
|
||
"plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markeredgewidth=0.5, markeredgecolor=\"b\", markersize=14, label=\"타깃\")\n",
|
||
"plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"예측\")\n",
|
||
"plt.legend(loc=\"upper left\")\n",
|
||
"plt.xlabel(\"시간\")\n",
|
||
"\n",
|
||
"save_fig(\"time_series_pred_plot\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## `OutputProjectionWrapper` 사용하지 않기"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 56,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 20\n",
|
||
"n_inputs = 1\n",
|
||
"n_neurons = 100\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 57,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu)\n",
|
||
"rnn_outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 58,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_outputs = 1\n",
|
||
"learning_rate = 0.001"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 59,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons])\n",
|
||
"stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)\n",
|
||
"outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 60,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"loss = tf.reduce_mean(tf.square(outputs - y))\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()\n",
|
||
"saver = tf.train.Saver()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 61,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0 \tMSE: 13.798526\n",
|
||
"100 \tMSE: 0.51873666\n",
|
||
"200 \tMSE: 0.18096465\n",
|
||
"300 \tMSE: 0.08363678\n",
|
||
"400 \tMSE: 0.06251121\n",
|
||
"500 \tMSE: 0.060582373\n",
|
||
"600 \tMSE: 0.055472486\n",
|
||
"700 \tMSE: 0.051638845\n",
|
||
"800 \tMSE: 0.05216893\n",
|
||
"900 \tMSE: 0.04946163\n",
|
||
"1000 \tMSE: 0.049049225\n",
|
||
"1100 \tMSE: 0.051213406\n",
|
||
"1200 \tMSE: 0.04204171\n",
|
||
"1300 \tMSE: 0.049295332\n",
|
||
"1400 \tMSE: 0.043647002\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_iterations = 1500\n",
|
||
"batch_size = 50\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" for iteration in range(n_iterations):\n",
|
||
" X_batch, y_batch = next_batch(batch_size, n_steps)\n",
|
||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||
" if iteration % 100 == 0:\n",
|
||
" mse = loss.eval(feed_dict={X: X_batch, y: y_batch})\n",
|
||
" print(iteration, \"\\tMSE:\", mse)\n",
|
||
" \n",
|
||
" X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_new})\n",
|
||
" \n",
|
||
" saver.save(sess, \"./my_time_series_model\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 62,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[[-3.4256656],\n",
|
||
" [-2.4964879],\n",
|
||
" [-1.1188097],\n",
|
||
" [ 0.6010748],\n",
|
||
" [ 2.0974448],\n",
|
||
" [ 3.2044346],\n",
|
||
" [ 3.585753 ],\n",
|
||
" [ 3.3138356],\n",
|
||
" [ 2.8268244],\n",
|
||
" [ 2.2785282],\n",
|
||
" [ 1.7047077],\n",
|
||
" [ 1.5082613],\n",
|
||
" [ 1.8684278],\n",
|
||
" [ 2.742042 ],\n",
|
||
" [ 3.9028168],\n",
|
||
" [ 5.073093 ],\n",
|
||
" [ 6.147061 ],\n",
|
||
" [ 6.7127986],\n",
|
||
" [ 6.645899 ],\n",
|
||
" [ 6.041297 ]]], dtype=float32)"
|
||
]
|
||
},
|
||
"execution_count": 62,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"y_pred"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 63,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.title(\"모델 테스트\", fontsize=14)\n",
|
||
"plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
|
||
"plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
|
||
"plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"prediction\")\n",
|
||
"plt.legend(loc=\"upper left\")\n",
|
||
"plt.xlabel(\"시간\")\n",
|
||
"\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 새로운 시퀀스 생성하기"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 64,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:tensorflow:Restoring parameters from ./my_time_series_model\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"with tf.Session() as sess: # 책에는 없음\n",
|
||
" saver.restore(sess, \"./my_time_series_model\") # 책에는 없음\n",
|
||
"\n",
|
||
" sequence = [0.] * n_steps\n",
|
||
" for iteration in range(300):\n",
|
||
" X_batch = np.array(sequence[-n_steps:]).reshape(1, n_steps, 1)\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
|
||
" sequence.append(y_pred[0, -1, 0])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 65,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 576x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.figure(figsize=(8,4))\n",
|
||
"plt.plot(np.arange(len(sequence)), sequence, \"b-\")\n",
|
||
"plt.plot(t[:n_steps], sequence[:n_steps], \"b-\", linewidth=3)\n",
|
||
"plt.xlabel(\"시간\")\n",
|
||
"plt.ylabel(\"값\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 66,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:tensorflow:Restoring parameters from ./my_time_series_model\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 792x288 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"with tf.Session() as sess:\n",
|
||
" saver.restore(sess, \"./my_time_series_model\")\n",
|
||
"\n",
|
||
" sequence1 = [0. for i in range(n_steps)]\n",
|
||
" for iteration in range(len(t) - n_steps):\n",
|
||
" X_batch = np.array(sequence1[-n_steps:]).reshape(1, n_steps, 1)\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
|
||
" sequence1.append(y_pred[0, -1, 0])\n",
|
||
"\n",
|
||
" sequence2 = [time_series(i * resolution + t_min + (t_max-t_min/3)) for i in range(n_steps)]\n",
|
||
" for iteration in range(len(t) - n_steps):\n",
|
||
" X_batch = np.array(sequence2[-n_steps:]).reshape(1, n_steps, 1)\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
|
||
" sequence2.append(y_pred[0, -1, 0])\n",
|
||
"\n",
|
||
"plt.figure(figsize=(11,4))\n",
|
||
"plt.subplot(121)\n",
|
||
"plt.plot(t, sequence1, \"b-\")\n",
|
||
"plt.plot(t[:n_steps], sequence1[:n_steps], \"b-\", linewidth=3)\n",
|
||
"plt.xlabel(\"시간\")\n",
|
||
"plt.ylabel(\"값\", rotation=0)\n",
|
||
"\n",
|
||
"plt.subplot(122)\n",
|
||
"plt.plot(t, sequence2, \"b-\")\n",
|
||
"plt.plot(t[:n_steps], sequence2[:n_steps], \"b-\", linewidth=3)\n",
|
||
"plt.xlabel(\"시간\")\n",
|
||
"save_fig(\"creative_sequence_plot\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 심층 RNN"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## MultiRNNCell"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 67,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_inputs = 2\n",
|
||
"n_steps = 5\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 68,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_neurons = 100\n",
|
||
"n_layers = 3\n",
|
||
"\n",
|
||
"layers = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 69,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 70,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_batch = np.random.rand(2, n_steps, n_inputs)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 71,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" outputs_val, states_val = sess.run([outputs, states], feed_dict={X: X_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 72,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(2, 5, 100)"
|
||
]
|
||
},
|
||
"execution_count": 72,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"outputs_val.shape"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 여러 GPU에 심층 RNN 분산하기"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"이렇게 사용해서는 **안됩니다**:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 73,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"with tf.device(\"/gpu:0\"): # 이 할당은 무시됩니다\n",
|
||
" layer1 = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
"\n",
|
||
"with tf.device(\"/gpu:1\"): # 이 할당은 무시됩니다\n",
|
||
" layer2 = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"대신 `DeviceCellWrapper`를 사용합니다:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 74,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import tensorflow as tf\n",
|
||
"\n",
|
||
"class DeviceCellWrapper(tf.contrib.rnn.RNNCell):\n",
|
||
" def __init__(self, device, cell):\n",
|
||
" self._cell = cell\n",
|
||
" self._device = device\n",
|
||
"\n",
|
||
" @property\n",
|
||
" def state_size(self):\n",
|
||
" return self._cell.state_size\n",
|
||
"\n",
|
||
" @property\n",
|
||
" def output_size(self):\n",
|
||
" return self._cell.output_size\n",
|
||
"\n",
|
||
" def __call__(self, inputs, state, scope=None):\n",
|
||
" with tf.device(self._device):\n",
|
||
" return self._cell(inputs, state, scope)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 75,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_inputs = 5\n",
|
||
"n_steps = 20\n",
|
||
"n_neurons = 100\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, shape=[None, n_steps, n_inputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 76,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"devices = [\"/cpu:0\", \"/cpu:0\", \"/cpu:0\"] # 만약 GPU가 세 개 있다면 [\"/gpu:0\", \"/gpu:1\", \"/gpu:2\"]로 바꿉니다\n",
|
||
"cells = [DeviceCellWrapper(dev,tf.contrib.rnn.BasicRNNCell(num_units=n_neurons))\n",
|
||
" for dev in devices]\n",
|
||
"multi_layer_cell = tf.contrib.rnn.MultiRNNCell(cells)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"또 다른 방법으로 텐서플로 1.1부터 `tf.contrib.rnn.DeviceWrapper` 클래스를 사용할 수 있습니다(텐서플로 1.2부터는 `tf.nn.rnn_cell.DeviceWrapper`가 되었습니다)."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 77,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 78,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[[-0.033671 0.00615814 -0.0224805 ... -0.08477943 0.07812577\n",
|
||
" 0.0409406 ]\n",
|
||
" [ 0.2202788 0.06180531 0.22256151 ... -0.23308094 0.06236795\n",
|
||
" -0.01974874]\n",
|
||
" [-0.13161832 0.00174079 0.15934998 ... -0.14575946 -0.29136425\n",
|
||
" -0.22982824]\n",
|
||
" ...\n",
|
||
" [ 0.40135226 -0.0683148 0.19030328 ... -0.07745527 0.35425738\n",
|
||
" 0.15830204]\n",
|
||
" [ 0.7006527 -0.0154526 -0.06332135 ... -0.20901318 -0.0539793\n",
|
||
" 0.12965451]\n",
|
||
" [ 0.3396977 -0.3388407 -0.1747916 ... -0.31547976 -0.10045247\n",
|
||
" -0.00143633]]\n",
|
||
"\n",
|
||
" [[ 0.04636343 0.05075924 -0.01460598 ... -0.01488171 0.12059579\n",
|
||
" 0.03546331]\n",
|
||
" [ 0.10273134 0.02954917 0.14052095 ... -0.09312268 -0.1330954\n",
|
||
" -0.07913667]\n",
|
||
" [-0.03998944 -0.23300202 0.10142665 ... -0.27028072 0.0087689\n",
|
||
" 0.07616787]\n",
|
||
" ...\n",
|
||
" [ 0.3201678 0.17390148 0.06568783 ... -0.32528323 0.00921553\n",
|
||
" 0.37827423]\n",
|
||
" [ 0.6501674 -0.10477125 -0.183512 ... -0.5114695 0.00990305\n",
|
||
" 0.2610496 ]\n",
|
||
" [ 0.50272596 -0.12907378 0.07752537 ... -0.2155963 0.02334055\n",
|
||
" -0.1325899 ]]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" print(sess.run(outputs, feed_dict={X: np.random.rand(2, n_steps, n_inputs)}))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 드롭아웃"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 79,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_inputs = 1\n",
|
||
"n_neurons = 100\n",
|
||
"n_layers = 3\n",
|
||
"n_steps = 20\n",
|
||
"n_outputs = 1"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 80,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"노트: `input_keep_prob` 매개변수는 플레이스홀더로 훈련하는 동안에는 어느 값이나 가능하고 테스트할 때는 1.0으로 지정합니다(드롭아웃을 끕니다)."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 81,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"keep_prob = tf.placeholder_with_default(1.0, shape=())\n",
|
||
"cells = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"cells_drop = [tf.contrib.rnn.DropoutWrapper(cell, input_keep_prob=keep_prob)\n",
|
||
" for cell in cells]\n",
|
||
"multi_layer_cell = tf.contrib.rnn.MultiRNNCell(cells_drop)\n",
|
||
"rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 82,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"learning_rate = 0.01\n",
|
||
"\n",
|
||
"stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons])\n",
|
||
"stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)\n",
|
||
"outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])\n",
|
||
"\n",
|
||
"loss = tf.reduce_mean(tf.square(outputs - y))\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()\n",
|
||
"saver = tf.train.Saver()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 83,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0 훈련 MSE: 14.73364\n",
|
||
"100 훈련 MSE: 4.686095\n",
|
||
"200 훈련 MSE: 3.6556115\n",
|
||
"300 훈련 MSE: 3.8748214\n",
|
||
"400 훈련 MSE: 2.3531404\n",
|
||
"500 훈련 MSE: 3.7559667\n",
|
||
"600 훈련 MSE: 4.06035\n",
|
||
"700 훈련 MSE: 4.9739947\n",
|
||
"800 훈련 MSE: 4.0471015\n",
|
||
"900 훈련 MSE: 3.8106322\n",
|
||
"1000 훈련 MSE: 4.920709\n",
|
||
"1100 훈련 MSE: 3.858466\n",
|
||
"1200 훈련 MSE: 3.3147843\n",
|
||
"1300 훈련 MSE: 3.8227804\n",
|
||
"1400 훈련 MSE: 4.623097\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_iterations = 1500\n",
|
||
"batch_size = 50\n",
|
||
"train_keep_prob = 0.5\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" for iteration in range(n_iterations):\n",
|
||
" X_batch, y_batch = next_batch(batch_size, n_steps)\n",
|
||
" _, mse = sess.run([training_op, loss],\n",
|
||
" feed_dict={X: X_batch, y: y_batch,\n",
|
||
" keep_prob: train_keep_prob})\n",
|
||
" if iteration % 100 == 0: # not shown in the book\n",
|
||
" print(iteration, \"훈련 MSE:\", mse) # not shown\n",
|
||
" \n",
|
||
" saver.save(sess, \"./my_dropout_time_series_model\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 84,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:tensorflow:Restoring parameters from ./my_dropout_time_series_model\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"with tf.Session() as sess:\n",
|
||
" saver.restore(sess, \"./my_dropout_time_series_model\")\n",
|
||
"\n",
|
||
" X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_new})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 85,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.title(\"모델 테스트\", fontsize=14)\n",
|
||
"plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
|
||
"plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
|
||
"plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"prediction\")\n",
|
||
"plt.legend(loc=\"upper left\")\n",
|
||
"plt.xlabel(\"시간\")\n",
|
||
"\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"이런 드롭아웃이 이 경우엔 크게 도움이 안되네요. :/"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# LSTM"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 86,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"lstm_cell = tf.contrib.rnn.BasicLSTMCell(num_units=n_neurons)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 87,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_steps = 28\n",
|
||
"n_inputs = 28\n",
|
||
"n_neurons = 150\n",
|
||
"n_outputs = 10\n",
|
||
"n_layers = 3\n",
|
||
"\n",
|
||
"learning_rate = 0.001\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.int32, [None])\n",
|
||
"\n",
|
||
"lstm_cells = [tf.contrib.rnn.BasicLSTMCell(num_units=n_neurons)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"multi_cell = tf.contrib.rnn.MultiRNNCell(lstm_cells)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(multi_cell, X, dtype=tf.float32)\n",
|
||
"top_layer_h_state = states[-1][1]\n",
|
||
"logits = tf.layers.dense(top_layer_h_state, n_outputs, name=\"softmax\")\n",
|
||
"xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)\n",
|
||
"loss = tf.reduce_mean(xentropy, name=\"loss\")\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"correct = tf.nn.in_top_k(logits, y, 1)\n",
|
||
"accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
|
||
" \n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 88,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_3:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_4:0' shape=(?, 150) dtype=float32>),\n",
|
||
" LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_5:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_6:0' shape=(?, 150) dtype=float32>),\n",
|
||
" LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_7:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_8:0' shape=(?, 150) dtype=float32>))"
|
||
]
|
||
},
|
||
"execution_count": 88,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"states"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 89,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<tf.Tensor 'rnn/while/Exit_8:0' shape=(?, 150) dtype=float32>"
|
||
]
|
||
},
|
||
"execution_count": 89,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"top_layer_h_state"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 90,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"에포크 0 훈련 정확도 = 0.9533333 테스트 정확도 = 0.9506\n",
|
||
"에포크 1 훈련 정확도 = 0.99333334 테스트 정확도 = 0.9661\n",
|
||
"에포크 2 훈련 정확도 = 0.99333334 테스트 정확도 = 0.9796\n",
|
||
"에포크 3 훈련 정확도 = 0.99333334 테스트 정확도 = 0.9777\n",
|
||
"에포크 4 훈련 정확도 = 0.9866667 테스트 정확도 = 0.9833\n",
|
||
"에포크 5 훈련 정확도 = 0.99333334 테스트 정확도 = 0.9857\n",
|
||
"에포크 6 훈련 정확도 = 1.0 테스트 정확도 = 0.9863\n",
|
||
"에포크 7 훈련 정확도 = 0.99333334 테스트 정확도 = 0.9875\n",
|
||
"에포크 8 훈련 정확도 = 1.0 테스트 정확도 = 0.9879\n",
|
||
"에포크 9 훈련 정확도 = 1.0 테스트 정확도 = 0.9868\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_epochs = 10\n",
|
||
"batch_size = 150\n",
|
||
"\n",
|
||
"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",
|
||
" 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_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
|
||
" print(\"에포크\", epoch, \"훈련 정확도 =\", acc_train, \"테스트 정확도 =\", acc_test)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 91,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"lstm_cell = tf.contrib.rnn.LSTMCell(num_units=n_neurons, use_peepholes=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 92,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"gru_cell = tf.contrib.rnn.GRUCell(num_units=n_neurons)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 임베딩"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"이 섹션은 텐서플로의 [Word2Vec 튜토리얼](https://www.tensorflow.org/versions/r0.11/tutorials/word2vec/index.html)을 기반으로 합니다."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 데이터 추출"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 93,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from six.moves import urllib\n",
|
||
"\n",
|
||
"import errno\n",
|
||
"import os\n",
|
||
"import zipfile\n",
|
||
"\n",
|
||
"WORDS_PATH = \"datasets/words\"\n",
|
||
"WORDS_URL = 'http://mattmahoney.net/dc/text8.zip'\n",
|
||
"\n",
|
||
"def mkdir_p(path):\n",
|
||
" \"\"\"디렉토리 생성, 이미 있다면 그냥 통과\n",
|
||
" \n",
|
||
" 이 함수는 파이썬 2 버전을 지원하기 위해서입니다.\n",
|
||
" 파이썬 3.2 이상이면 다음과 같이 쓸 수 있습니다:\n",
|
||
" >>> os.makedirs(path, exist_ok=True)\n",
|
||
" \"\"\"\n",
|
||
" try:\n",
|
||
" os.makedirs(path)\n",
|
||
" except OSError as exc:\n",
|
||
" if exc.errno == errno.EEXIST and os.path.isdir(path):\n",
|
||
" pass\n",
|
||
" else:\n",
|
||
" raise\n",
|
||
"\n",
|
||
"def fetch_words_data(words_url=WORDS_URL, words_path=WORDS_PATH):\n",
|
||
" os.makedirs(words_path, exist_ok=True)\n",
|
||
" zip_path = os.path.join(words_path, \"words.zip\")\n",
|
||
" if not os.path.exists(zip_path):\n",
|
||
" urllib.request.urlretrieve(words_url, zip_path)\n",
|
||
" with zipfile.ZipFile(zip_path) as f:\n",
|
||
" data = f.read(f.namelist()[0])\n",
|
||
" return data.decode(\"ascii\").split()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 94,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"words = fetch_words_data()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 95,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"['anarchism', 'originated', 'as', 'a', 'term']"
|
||
]
|
||
},
|
||
"execution_count": 95,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"words[:5]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 사전 구축"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 96,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from collections import Counter\n",
|
||
"\n",
|
||
"vocabulary_size = 50000\n",
|
||
"\n",
|
||
"vocabulary = [(\"UNK\", None)] + Counter(words).most_common(vocabulary_size - 1)\n",
|
||
"vocabulary = np.array([word for word, _ in vocabulary])\n",
|
||
"dictionary = {word: code for code, word in enumerate(vocabulary)}\n",
|
||
"data = np.array([dictionary.get(word, 0) for word in words])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 97,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"('anarchism originated as a term of abuse first used',\n",
|
||
" array([5243, 3084, 12, 6, 195, 2, 3135, 46, 59]))"
|
||
]
|
||
},
|
||
"execution_count": 97,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"\" \".join(words[:9]), data[:9]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 98,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'guided matrix as a term of recipient first used'"
|
||
]
|
||
},
|
||
"execution_count": 98,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"\" \".join([vocabulary[word_index] for word_index in [5241, 3081, 12, 6, 195, 2, 3134, 46, 59]])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 99,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"('culottes', 0)"
|
||
]
|
||
},
|
||
"execution_count": 99,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"words[24], data[24]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 배치 생성"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 100,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import random\n",
|
||
"from collections import deque\n",
|
||
"\n",
|
||
"def generate_batch(batch_size, num_skips, skip_window):\n",
|
||
" global data_index\n",
|
||
" assert batch_size % num_skips == 0\n",
|
||
" assert num_skips <= 2 * skip_window\n",
|
||
" batch = np.ndarray(shape=(batch_size), dtype=np.int32)\n",
|
||
" labels = np.ndarray(shape=(batch_size, 1), dtype=np.int32)\n",
|
||
" span = 2 * skip_window + 1 # [ skip_window target skip_window ]\n",
|
||
" buffer = deque(maxlen=span)\n",
|
||
" for _ in range(span):\n",
|
||
" buffer.append(data[data_index])\n",
|
||
" data_index = (data_index + 1) % len(data)\n",
|
||
" for i in range(batch_size // num_skips):\n",
|
||
" target = skip_window # buffer 중간에 타깃 레이블을 둡니다\n",
|
||
" targets_to_avoid = [ skip_window ]\n",
|
||
" for j in range(num_skips):\n",
|
||
" while target in targets_to_avoid:\n",
|
||
" target = random.randint(0, span - 1)\n",
|
||
" targets_to_avoid.append(target)\n",
|
||
" batch[i * num_skips + j] = buffer[skip_window]\n",
|
||
" labels[i * num_skips + j, 0] = buffer[target]\n",
|
||
" buffer.append(data[data_index])\n",
|
||
" data_index = (data_index + 1) % len(data)\n",
|
||
" return batch, labels"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 101,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"data_index=0\n",
|
||
"batch, labels = generate_batch(8, 2, 1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 102,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(array([3084, 3084, 12, 12, 6, 6, 195, 195], dtype=int32),\n",
|
||
" ['originated', 'originated', 'as', 'as', 'a', 'a', 'term', 'term'])"
|
||
]
|
||
},
|
||
"execution_count": 102,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"batch, [vocabulary[word] for word in batch]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 103,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(array([[ 12],\n",
|
||
" [5243],\n",
|
||
" [3084],\n",
|
||
" [ 6],\n",
|
||
" [ 195],\n",
|
||
" [ 12],\n",
|
||
" [ 6],\n",
|
||
" [ 2]], dtype=int32),\n",
|
||
" ['as', 'anarchism', 'originated', 'a', 'term', 'as', 'a', 'of'])"
|
||
]
|
||
},
|
||
"execution_count": 103,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"labels, [vocabulary[word] for word in labels[:, 0]]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 모델 구성"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 104,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"batch_size = 128\n",
|
||
"embedding_size = 128 # 임베딩 벡터 차원\n",
|
||
"skip_window = 1 # 고려할 왼쪽과 오른쪽 단어의 개수\n",
|
||
"num_skips = 2 # 레이블을 생성하기 위한 입력의 재사용 횟수\n",
|
||
"\n",
|
||
"# 가까운 이웃을 샘플링하기 위해 랜덤한 검증 세트를 만듭니다.\n",
|
||
"# 검증 샘플은 가장 흔한 단어인 낮은 ID 번호를 가진 것으로 제한합니다.\n",
|
||
"valid_size = 16 # 유사도를 평가하기 위해 랜덤하게 구성할 단어 세트 크기\n",
|
||
"valid_window = 100 # 검증 샘플을 전체 샘플의 앞 부분에서만 선택합니다\n",
|
||
"valid_examples = np.random.choice(valid_window, valid_size, replace=False)\n",
|
||
"num_sampled = 64 # 부정 샘플링(negative sampling)의 수\n",
|
||
"\n",
|
||
"learning_rate = 0.01"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 105,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"# 입력 데이터\n",
|
||
"train_labels = tf.placeholder(tf.int32, shape=[batch_size, 1])\n",
|
||
"valid_dataset = tf.constant(valid_examples, dtype=tf.int32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 106,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"vocabulary_size = 50000\n",
|
||
"embedding_size = 150\n",
|
||
"\n",
|
||
"# 입력을 위해 임베딩을 조회합니다\n",
|
||
"init_embeds = tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0)\n",
|
||
"embeddings = tf.Variable(init_embeds)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 107,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"train_inputs = tf.placeholder(tf.int32, shape=[None])\n",
|
||
"embed = tf.nn.embedding_lookup(embeddings, train_inputs)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 108,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"WARNING:tensorflow:From <ipython-input-108-1dfd74cb904f>:18: calling reduce_sum (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.\n",
|
||
"Instructions for updating:\n",
|
||
"keep_dims is deprecated, use keepdims instead\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# NCE 손실을 위한 변수를 만듭니다\n",
|
||
"nce_weights = tf.Variable(\n",
|
||
" tf.truncated_normal([vocabulary_size, embedding_size],\n",
|
||
" stddev=1.0 / np.sqrt(embedding_size)))\n",
|
||
"nce_biases = tf.Variable(tf.zeros([vocabulary_size]))\n",
|
||
"\n",
|
||
"# 배치에서 NCE 손실의 평균을 계산합니다.Compute the average NCE loss for the batch.\n",
|
||
"# tf.nce_loss는 자동으로 손실을 평가할 때마다 음성 레이블에서 새로운 샘플을 뽑습니다.\n",
|
||
"loss = tf.reduce_mean(\n",
|
||
" tf.nn.nce_loss(nce_weights, nce_biases, train_labels, embed,\n",
|
||
" num_sampled, vocabulary_size))\n",
|
||
"\n",
|
||
"# Adam 옵티마이저\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"# 미니배치 샘플과 모든 임베딩 사이의 코사인 유사도를 계산합니다\n",
|
||
"norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), axis=1, keep_dims=True))\n",
|
||
"normalized_embeddings = embeddings / norm\n",
|
||
"valid_embeddings = tf.nn.embedding_lookup(normalized_embeddings, valid_dataset)\n",
|
||
"similarity = tf.matmul(valid_embeddings, normalized_embeddings, transpose_b=True)\n",
|
||
"\n",
|
||
"# 초기화를 위한 연산\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 모델 훈련"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 109,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"반복: 0\t스텝 0 에서의 평균 손실: 293.06048583984375\n",
|
||
"would에 가장 가까운 단어: factories, daemon, mayan, webern, leveling, swabia, carter, medicinal,\n",
|
||
"on에 가장 가까운 단어: roofed, assent, freenet, gilles, dagmar, bland, wagers, redevelopment,\n",
|
||
"four에 가장 가까운 단어: signifies, overlooked, tank, carboxylic, hustler, tina, disastrously, mammuthus,\n",
|
||
"his에 가장 가까운 단어: penn, suzuki, switzerland, sector, discharge, capacitive, value, backlight,\n",
|
||
"often에 가장 가까운 단어: mentor, contrasts, bootlegged, ling, observatories, ubangi, robber, implemented,\n",
|
||
"in에 가장 가까운 단어: intercommunal, congestion, needlessly, tobacco, necronomicon, displays, pottery, skeptics,\n",
|
||
"an에 가장 가까운 단어: guzm, pickett, validating, practiced, sandinista, vitis, andries, expanses,\n",
|
||
"eight에 가장 가까운 단어: rig, nagorno, creasy, paschal, disjointed, processing, seconded, retroflex,\n",
|
||
"these에 가장 가까운 단어: calculating, vaporized, angel, kandahar, relinquish, fluids, bedtime, puzzling,\n",
|
||
"nine에 가장 가까운 단어: picchi, luke, atheists, signifying, awt, stables, develop, relating,\n",
|
||
"called에 가장 가까운 단어: callisto, tends, intends, veterinarians, watkins, matador, phenomenal, chilperic,\n",
|
||
"about에 가장 가까운 단어: nominees, sorcerer, southey, curtin, filters, lightly, davao, indecisive,\n",
|
||
"up에 가장 가까운 단어: lyricist, hidden, biggs, staged, declining, pilsener, march, aboriginal,\n",
|
||
"one에 가장 가까운 단어: inclinations, kolkata, foxx, rodan, lalor, lords, edith, collectivism,\n",
|
||
"and에 가장 가까운 단어: attached, singly, omnivores, tabular, suppliers, silhouette, maradona, metaphase,\n",
|
||
"been에 가장 가까운 단어: absinthe, entice, nde, hive, linear, unscr, indicted, determinative,\n",
|
||
"반복: 2000\t스텝 2000 에서의 평균 손실: 131.21407338047027\n",
|
||
"반복: 4000\t스텝 4000 에서의 평균 손실: 62.32993085551262\n",
|
||
"반복: 6000\t스텝 6000 에서의 평균 손실: 41.999602062940596\n",
|
||
"반복: 8000\t스텝 8000 에서의 평균 손실: 31.167041951179506\n",
|
||
"반복: 10000\t스텝 10000 에서의 평균 손실: 25.85122103357315\n",
|
||
"would에 가장 가까운 단어: to, shelter, had, could, cannot, niche, should, topalov,\n",
|
||
"on에 가장 가까운 단어: cooperstown, in, predominant, anand, var, antidepressants, from, ataxia,\n",
|
||
"four에 가장 가까운 단어: three, five, nine, two, one, eight, seven, zero,\n",
|
||
"his에 가장 가까운 단어: ampere, actinium, straczynski, s, staggered, celebrates, the, ataxia,\n",
|
||
"often에 가장 가까운 단어: heuristics, wanting, hochschule, altaic, hoxha, valley, rationale, commonly,\n",
|
||
"in에 가장 가까운 단어: and, branched, of, for, operates, the, achill, kickoff,\n",
|
||
"an에 가장 가까운 단어: spectral, preoccupied, atemi, ankh, a, is, columbus, chancellorsville,\n",
|
||
"eight에 가장 가까운 단어: nine, seven, one, six, zero, three, five, four,\n",
|
||
"these에 가장 가까운 단어: joy, provable, preservation, amphibian, fame, vibrating, fallacy, outcome,\n",
|
||
"nine에 가장 가까운 단어: eight, six, five, zero, three, one, four, seven,\n",
|
||
"called에 가장 가까운 단어: steppe, foot, switch, satire, told, suppose, researches, leech,\n",
|
||
"about에 가장 가까운 단어: obscure, parasite, horch, garrett, transcriptase, seo, dollfuss, provable,\n",
|
||
"up에 가장 가까운 단어: actinium, diacritic, the, kournikova, save, and, starvation, appointing,\n",
|
||
"one에 가장 가까운 단어: three, nine, eight, six, seven, two, four, five,\n",
|
||
"and에 가장 가까운 단어: in, the, of, asparagales, amhr, chun, operates, arches,\n",
|
||
"been에 가장 가까운 단어: has, had, omotic, unofficial, have, chadic, by, investigates,\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"num_steps = 10001\n",
|
||
"\n",
|
||
"with tf.Session() as session:\n",
|
||
" init.run()\n",
|
||
"\n",
|
||
" average_loss = 0\n",
|
||
" for step in range(num_steps):\n",
|
||
" print(\"\\r반복: {}\".format(step), end=\"\\t\")\n",
|
||
" batch_inputs, batch_labels = generate_batch(batch_size, num_skips, skip_window)\n",
|
||
" feed_dict = {train_inputs : batch_inputs, train_labels : batch_labels}\n",
|
||
"\n",
|
||
" # 훈련 연산을 평가하여 스텝을 한 단계를 업데이트합니다(session.run()에서 반환된 값을 사용합니다)\n",
|
||
" _, loss_val = session.run([training_op, loss], feed_dict=feed_dict)\n",
|
||
" average_loss += loss_val\n",
|
||
"\n",
|
||
" if step % 2000 == 0:\n",
|
||
" if step > 0:\n",
|
||
" average_loss /= 2000\n",
|
||
" # 평균 손실은 2000개 배치에 대한 손실의 추정입니다.\n",
|
||
" print(\"스텝 \", step, \"에서의 평균 손실: \", average_loss)\n",
|
||
" average_loss = 0\n",
|
||
"\n",
|
||
" # 이 코드는 비용이 많이 듭니다 (500 스텝마다 ~20%씩 느려집니다)\n",
|
||
" if step % 10000 == 0:\n",
|
||
" sim = similarity.eval()\n",
|
||
" for i in range(valid_size):\n",
|
||
" valid_word = vocabulary[valid_examples[i]]\n",
|
||
" top_k = 8 # 가장 가까운 단어의 개수\n",
|
||
" nearest = (-sim[i, :]).argsort()[1:top_k+1]\n",
|
||
" log_str = \"%s에 가장 가까운 단어:\" % valid_word\n",
|
||
" for k in range(top_k):\n",
|
||
" close_word = vocabulary[nearest[k]]\n",
|
||
" log_str = \"%s %s,\" % (log_str, close_word)\n",
|
||
" print(log_str)\n",
|
||
"\n",
|
||
" final_embeddings = normalized_embeddings.eval()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"마지막 임베딩을 저장합니다(물론 텐서플로의 `Saver`를 사용해도 됩니다):"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 110,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"np.save(\"./my_final_embeddings.npy\", final_embeddings)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 임베딩 그래프"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 111,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def plot_with_labels(low_dim_embs, labels):\n",
|
||
" assert low_dim_embs.shape[0] >= len(labels), \"임베딩보다 레이블이 많습니다.\"\n",
|
||
" plt.figure(figsize=(18, 18)) # 인치 크기\n",
|
||
" for i, label in enumerate(labels):\n",
|
||
" x, y = low_dim_embs[i,:]\n",
|
||
" plt.scatter(x, y)\n",
|
||
" plt.annotate(label,\n",
|
||
" xy=(x, y),\n",
|
||
" xytext=(5, 2),\n",
|
||
" textcoords='offset points',\n",
|
||
" ha='right',\n",
|
||
" va='bottom')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 112,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABCQAAAP3CAYAAAD0m58GAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XlclWX+//HXzY4buLOpuKSISViUSxEI5TaZaaW0qNhiqTnapI5lOpbtmWVZKl8LrfyNTWU6musgBC5ZuAymUrmQG4iE4A4HuH9/GIwkliicG/D9fDzmMedc5z43n8uHqed9rutzGaZpIiIiIiIiIiJiTw5WFyAiIiIiIiIi1x4FEiIiIiIiIiJidwokRERERERERMTuFEiIiIiIiIiIiN0pkBARERERERERu1MgISIiIiIiIiJ2p0BCREREREREROxOgYSIiIiIiIiI2J0CCRERERERERGxOyerC7hSjRo1Mv39/a0uQ0REREREREQusGXLlizTNBv/2XXVNpDw9/cnOTnZ6jJERERERERE5AKGYfxyOddpy4aIiIiIiIiI2J0CCRERERERERGxOwUSIiIiIiIiImJ3CiRERERERERExO4USIiIiIiIiIiI3SmQEBERERERERG7UyAhIiIiIiIiInanQEJERERERERE7O6qAwnDMJwNwxhnGIbNMIyoC8bDDMPYahhGimEYyYZhdLnE+w3DMKYZhvGjYRi7DMP41DCM2ldbl4iIiIiIiIhUXRWxQuJxwAS+LR4wDMMTWAyMMk0zCBgHLDUMo1YZ7x8K9AGCTdMMBGzA6xVQl4iIiIiIiIhUUVcdSJim+YFpmm8BhRcM9wR+NE1z02/XJADpQGQZtxgEzDVN8+xvz2cCD1xtXSIiIiIiIiJSdVVWD4lWwN7fje39bfzPrt0LNDAMw+P3FxqGMfy37R/Jx44dq7BiRURERERERMS+KiuQMCi9YgKg4BI/7/fXFvz2/xdda5pmjGmaIaZphjRu3LhCChURERERERER+6usQOIQ0Px3Y81/G/+za5sDp4CcyilNRERERERERKxWWYHEUiDIMIyOAIZh3AIEAGsNw2hoGMYGwzCu++3aT4DHDMNw+e35aGCxaZpmJdUmIiIiIiIiIhZzqoybmqaZaxjG/cBHhmGYnN+G0cc0zRzDMJoBLYDiHhEfA22A7wzDKAB2AU9VRl0iIiIiIiIiUjUY1XUhQkhIiJmcnGx1GSIiIiIiIiJyAcMwtpimGfJn11XWlg0RERERERERkUtSICEiIiIiIiIidqdAQkRERERERETsToGEiIiIiIiIiNidAgkRERERERERsTsFEiIiIiIiIiJidwokRERERERERMTuFEiIiIiIiIiIiN0pkBARERERERERu1MgISIiIiIiIiJ2p0BCREREREREROxOgYSIiIiIiIiI2J0CCRERERERERGxOwUSIiIiIiIiImJ3CiRERERERERExO4USIiIiIiIiIiI3SmQEBERERERERG7UyAhIiIicg1LSEggKirK6jJEROQapEBCREREREREROxOgYSIiIiIsGXLFiIiIoiIiKBnz54cPnyYc+fO8cADD9C9e3c6depETEwMAN999x2dO3fmzjvv5Nlnn8XLywuA8PBwUlNTAUhNTSU8PPyS9xYREVEgISIiIiIMGTKEefPmsW7dOkaPHs2LL76IYRhMmzaNNWvWMGfOHN555x0ARo0aRUxMDGvXriUiIuKK7i0iIuJkdQEiIiIiYq2srCwOHjzII488AkBBQQE+Pj4cOnSIyZMn4+/vT/PmzTlz5gwAhw4d4oYbbgAgMjKy5D6GYZQ8Liws/MN7i4iIKJAQERERucY1bNgQf39/Fi9eTIMGDSgsLOTw4cO89dZb9O3blwcffJB169aVun737t20b9+ejRs3low3atSIAwcOEBAQwPLly//w3iIiIgokRERERK5xhmEwe/ZsBgwYgGEYFBYWMmnSJPr168fIkSOZO3cuXbt2Lbl+9uzZDBkyBA8PDwIDA0tWRvztb39j5MiRvP322yUrKC517+bNm1syVxERqToM0zStruGKhISEmMnJyVaXISIiInJN+/XXX7n11ltLmlmKiIgYhrHFNM2QP7tOTS1FREREpFx+/fXXksefffYZN910k4XViIhIdaUtGyIiIiJSLsuXL2fu3Lk4ODjg7u7OvHnzLnnt6W2ZnFidRmFOHo6ertTr6U/tTk3sWK2IiFRV2rIhIiIiIpXi9LZMchb/jGkrKhkznB3wHHCdQgkRkRpMWzZERERExFInVqeVCiMATFsRJ1anWVOQiIhUKQokRERERKRSFObklWtcRESuLQokRERERKRSOHq6lmtcRESuLQokRERERKRS1Ovpj+Fc+p+bhrMD9Xr6W1OQiIhUKTplQ0REREQqRXHjSp2yISIiZVEgISIiIiKVpnanJgogRESkTNqyISIiIiIiIiJ2p0BCREREREREROxOgYSIiIiIiIiI2J0CCRERERERERGxOwUSIiIiIiIiImJ3CiRERERERERExO4USIiIiIiIiIiI3SmQEBERERERERG7UyAhIiIiIiIiInanQEJERERERERE7E6BhIiIiIiIiIjYnQIJEREREREREbE7BRIiIiIiIiIiYncKJERERERERETE7hRIiIiIiIiIiIjdKZAQERERqcGio6NZtWqV1WWIiIhcRIGEiIiIiIiIiNidAgkRERGRGuLo0aPcc889dO/enU6dOvHvf/8bgLi4OLp3786NN95IbGwsAOvXr6d79+5ERETQu3dvUlNTWbFiBSNHjiy539ixY/n888/Zu3cvvXv3JiIigrCwMH744QdL5iciIjWLYZqm1TVckZCQEDM5OdnqMkRERESqjOzsbPLy8qhfvz7Lly/no48+okmTJtSuXZv333+f3NxcOnTowM8//0xQUBCJiYl4e3uTkpLCyJEjSUpKIiQkhMTERBwdHencuTNbtmzhzjvv5NVXX6VLly788MMPPPPMM6xevdrq6YqISBVlGMYW0zRD/uw6J3sUIyIiIiKVb+/evUyfPp127drh5ubGmTNnAPjLX/4CgIeHB35+fhw7dozatWvj7e0NQFBQEPv378cwDAYPHsyiRYtwdXVl4MCBODk5sX37diZOnFjyc/Lz8+0/ORERqXEUSIiIiIjUEC+99BJ///vf6datGx999FHJ+Pbt2+nTpw/Hjh0jMzOTpk2bcvr0adLT00tWSPj7+wMwbNgw+vfvj6OjIwsXLgQgMDCQ2NhYWrZsCUBaWpq9pyYiIjWQAgkRERE7SEhI4LnnnqNp06YA1KpVi/T0dGw2G0OHDuWxxx5j6tSpHDhwgIMHD3LkyBFef/11Pv30U/bu3UuXLl1477332LBhA1OmTKGoqIjTp0+zaNEiWrVqhb+/P4MHD2bDhg0cP36cTz75hOuvv97iWYu9DRo0iOjoaHx9fQkKCioZT0lJoXfv3mRnZ/Puu+/i6upKbGwsDzzwAA4ODjg5OTFv3jzg/CqKgIAATp8+TZMmTQCYN28eTzzxBDabjYKCAoYPH14SYIiI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o0fj7OzM4sWLmTlzJgCnT58mJSVF2xa2ptQ/Kqv17IQJE8psO9u7d2+geAWkv78/derUwd7entTUVFJSUrh58yYjR44EoKCgADs7O06dOkW3bt0AMDIy4qWXXqrkMxSi+pKEhBCi2vD19cXX15f4+HiGDh3KN998g4WFBTY2NqW6ZwDs37+fCRMm4OfnR2FhIb169WLWrFnMnz+fLl26oFKpUBSFxYsXa9/ToEEDNmzYwKBBg9i7dy/3bihPffcu7spibTKiRFHRfeKuLJaERG3jMajKJSB+78yZM8TExFCvXj1GjRrFd999V+Zdwz179nD8+HGsra25du0aly9fZvny5URERKBWq5k5cybbtm1jz549jBw5kkGDBnH58mXWrl2r61MUVVhWatldUR43LsrPokWLtI9/n5CIjY3VJiRqit+3np01axaHDh3Czs6Od94pvXJNX1+/zMcajQZLS0scHR3ZsWMHFhYWFBYWcvv2bb766iuOHTtGnz59yMnJ4eTJkxV7QkLUIJKQEEJUO3Z2dhw4cED73N3dnddeew0bG5tSc8qq7dC7d2/t3Y+HlWztcHNz47fffgNg/2dHnvruXW5ewlONC6FL7dq10xZhbdWqFXfu3CnzruHPP/+sLRY7ceJETp8+TWJioraLTFZWlvYu4YoVKwBwdnbG0tJSNycmqoW6FoZlJh/qWhjqIJraxdfXl1WrVjF9+nRSU1Px9fXlvffeY9GiReTk5PDbb78RFhamnZ+cnMz48eNJS0sjLy+P999/n06dOunwDP6aZ207qygKK1eupF+/fiiKQmFhIXPnzmXChAm8/vrrdOjQARMTEyluLcRTkISEEKLayczMxMjICJVKRUxMDJmZmVhbWz/bwc5se+yy+me5e6c2tCU3L77McSGqmnPnzpGfn49KpSIiIoKYmBj27dtX6q5hVlYWKpWKhQsXcunSJQYPHsz69etp1qwZYWFh6OnpkZmZSX5+Pvv27ePYsWP06NGD8+fPk5ycrOMzFFVZ29ecSq1CAzCoo0fb15x0GFXtEhYWho2NDeHh4QDMnj2b2NjYUisoAN566y0GDRpEQECAtlD06dOndRDx0ytZXVmipOj03LlzH5lbch0AgoKCtI/VajXXrl0DoH379qXmldi9e3c5RCtE7SMJCSFEtRMXF8ekSZPQ19cnNzeXdevWPbJl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\n",
|
||
"text/plain": [
|
||
"<Figure size 1296x1296 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.manifold import TSNE\n",
|
||
"\n",
|
||
"tsne = TSNE(perplexity=30, n_components=2, init='pca', n_iter=5000)\n",
|
||
"plot_only = 500\n",
|
||
"low_dim_embs = tsne.fit_transform(final_embeddings[:plot_only,:])\n",
|
||
"labels = [vocabulary[i] for i in range(plot_only)]\n",
|
||
"plot_with_labels(low_dim_embs, labels)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 기계 번역"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"`basic_rnn_seq2seq()` 함수는 간단한 인코더/디코더 모델을 만듭니다. 먼저 `encoder_inputs`를 상태 벡터로 인코딩하는 RNN을 실행하고 그다음 `decoder_inputs`을 마지막 인코더 상태로 초기화시킨 디코더를 실행합니다. 인코더와 디코더는 같은 RNN 셀 타입을 사용하지만 파라미터를 공유하지는 않습니다."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 113,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import tensorflow as tf\n",
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 50\n",
|
||
"n_neurons = 200\n",
|
||
"n_layers = 3\n",
|
||
"num_encoder_symbols = 20000\n",
|
||
"num_decoder_symbols = 20000\n",
|
||
"embedding_size = 150\n",
|
||
"learning_rate = 0.01\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.int32, [None, n_steps]) # 영어 문장\n",
|
||
"Y = tf.placeholder(tf.int32, [None, n_steps]) # 프랑스어 번역\n",
|
||
"W = tf.placeholder(tf.float32, [None, n_steps - 1, 1])\n",
|
||
"Y_input = Y[:, :-1]\n",
|
||
"Y_target = Y[:, 1:]\n",
|
||
"\n",
|
||
"encoder_inputs = tf.unstack(tf.transpose(X)) # 1D 텐서의 리스트\n",
|
||
"decoder_inputs = tf.unstack(tf.transpose(Y_input)) # 1D 텐서의 리스트\n",
|
||
"\n",
|
||
"lstm_cells = [tf.contrib.rnn.BasicLSTMCell(num_units=n_neurons)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"cell = tf.contrib.rnn.MultiRNNCell(lstm_cells)\n",
|
||
"\n",
|
||
"output_seqs, states = tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq(\n",
|
||
" encoder_inputs,\n",
|
||
" decoder_inputs,\n",
|
||
" cell,\n",
|
||
" num_encoder_symbols,\n",
|
||
" num_decoder_symbols,\n",
|
||
" embedding_size)\n",
|
||
"\n",
|
||
"logits = tf.transpose(tf.unstack(output_seqs), perm=[1, 0, 2])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 114,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"logits_flat = tf.reshape(logits, [-1, num_decoder_symbols])\n",
|
||
"Y_target_flat = tf.reshape(Y_target, [-1])\n",
|
||
"W_flat = tf.reshape(W, [-1])\n",
|
||
"xentropy = W_flat * tf.nn.sparse_softmax_cross_entropy_with_logits(labels=Y_target_flat, logits=logits_flat)\n",
|
||
"loss = tf.reduce_mean(xentropy)\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"source": [
|
||
"# 연습문제 해답"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 1. to 6."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"부록 A 참조."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 7. 임베딩된 레버(Reber) 문법"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"먼저 문법에 맞는 문자열을 생성하는 함수가 필요합니다. 이 문법은 각 상태에서 가능한 전이 상태의 리스트입니다. 하나의 전이는 출력할 문자열(또는 생성할 문법)과 다음 상태를 지정합니다."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 115,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from random import choice, seed\n",
|
||
"\n",
|
||
"# 일관된 출력을 위한 유사난수 초기화\n",
|
||
"seed(42)\n",
|
||
"np.random.seed(42)\n",
|
||
"\n",
|
||
"default_reber_grammar = [\n",
|
||
" [(\"B\", 1)], # (상태 0) =B=>(상태 1)\n",
|
||
" [(\"T\", 2), (\"P\", 3)], # (상태 1) =T=>(상태 2) or =P=>(상태 3)\n",
|
||
" [(\"S\", 2), (\"X\", 4)], # (상태 2) =S=>(상태 2) or =X=>(상태 4)\n",
|
||
" [(\"T\", 3), (\"V\", 5)], # 등등..\n",
|
||
" [(\"X\", 3), (\"S\", 6)],\n",
|
||
" [(\"P\", 4), (\"V\", 6)],\n",
|
||
" [(\"E\", None)]] # (상태 6) =E=>(종료 상태)\n",
|
||
"\n",
|
||
"embedded_reber_grammar = [\n",
|
||
" [(\"B\", 1)],\n",
|
||
" [(\"T\", 2), (\"P\", 3)],\n",
|
||
" [(default_reber_grammar, 4)],\n",
|
||
" [(default_reber_grammar, 5)],\n",
|
||
" [(\"T\", 6)],\n",
|
||
" [(\"P\", 6)],\n",
|
||
" [(\"E\", None)]]\n",
|
||
"\n",
|
||
"def generate_string(grammar):\n",
|
||
" state = 0\n",
|
||
" output = []\n",
|
||
" while state is not None:\n",
|
||
" production, state = choice(grammar[state])\n",
|
||
" if isinstance(production, list):\n",
|
||
" production = generate_string(grammar=production)\n",
|
||
" output.append(production)\n",
|
||
" return \"\".join(output)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"기본 레버 문법에 맞는 문자열을 몇 개 만들어 보겠습니다:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 116,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"BTXXTTTTVPXTTTTTVPSE BTXSE BTXXTVPSE BTXXVPSE BTSSXXTTVVE BTXSE BTSSSXSE BPTTTVVE BTXXVVE BPTTVVE BTSXXTTTTVPSE BPTTVVE BPTVPSE BPTTVPXVVE BPVPXTTTVPXTVPSE BTXSE BPTTTTVPXTTTTTTTVPXVVE BPTVVE BTXSE BPTTTVVE BTSXXVPSE BTXXTTTTTVVE BPTTVPSE BPVVE BPTTTVPXVPXTTTTTVPXTTVVE "
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"for _ in range(25):\n",
|
||
" print(generate_string(default_reber_grammar), end=\" \")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"좋습니다. 이제 임베딩된 레버 문법에 맞는 문자열을 몇 개 만들어 보겠습니다:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 117,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"BPBPTVVEPE BTBPTVPXVVETE BPBPTTTVVEPE BPBTXSEPE BPBPTTTTTVPSEPE BTBTSXSETE BPBPVPSEPE BPBPVVEPE BPBTXSEPE BPBTSXSEPE BTBPTTVVETE BPBPVVEPE BTBTXSETE BPBPTTVVEPE BTBTSXXVVETE BTBTXXTVPXTVPSETE BTBPTVVETE BPBPVPXTTVPXTVVEPE BTBTXSETE BPBTXSEPE BPBTSXXTVPSEPE BPBPVVEPE BPBPTTTTTTTTTTVPXVVEPE BPBPVVEPE BPBPVVEPE "
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"for _ in range(25):\n",
|
||
" print(generate_string(embedded_reber_grammar), end=\" \")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"좋네요, 이제 이 문법을 따르지 않는 문자열을 생성할 함수를 만듭니다. 무작위하게 문자열을 만들 수 있지만 그렇게 하면 너무 문제가 쉬워지므로 대신 문법을 따르는 문자열을 만든 후 하나의 문자만 바꾸어 놓도록 하겠습니다:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 118,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def generate_corrupted_string(grammar, chars=\"BEPSTVX\"):\n",
|
||
" good_string = generate_string(grammar)\n",
|
||
" index = np.random.randint(len(good_string))\n",
|
||
" good_char = good_string[index]\n",
|
||
" bad_char = choice(list(set(chars) - set(good_char)))\n",
|
||
" return good_string[:index] + bad_char + good_string[index + 1:]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"잘못된 문자열 몇 개를 만들어 보죠:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 119,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"BPBPVPEEPE BPBSXSEPE BPBPTVVXPE BTBPPPSETE BTBPVVSTE BPBTSSXXTSTVVEPE BPETSXXTVPSEPE BPBTXSTPE BTBPTTTVPSXTE BPBTSXXTTTBTTVVEPE BPBVXXVPXTVPXTTVVEPE BPBPTTVBEPE BPBPVVEBE BPXPTTVVEPE BPBPVBSEPE BPBTVXXVVEPE BEBPTTTVPXVVETE BPBTSSXTEPE BPBPVBEPE BEBTXSEPE BTBPTVPXVPXVVETS PPBTSXXTVPXVPSEPE BPBTSXXTTTVVSEPE BPBPVPXVVTPE BTBTSVSETE "
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"for _ in range(25):\n",
|
||
" print(generate_corrupted_string(embedded_reber_grammar), end=\" \")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"문자열을 바로 RNN에 주입할 수는 없습니다. 먼저 벡터의 연속으로 바꾸어야 합니다. 각 벡터는 원-핫 인코딩을 사용하여 하나의 문자를 나타냅니다. 예를 들어, 벡터 `[1, 0, 0, 0, 0, 0, 0]`는 문자 \"B\"를 나타내고 벡터 `[0, 1, 0, 0, 0, 0, 0]`는 문자 \"E\"를 나타내는 식입니다. 이런 원-핫 벡터의 연속으로 문자열을 바꾸는 함수를 작성해 보겠습니다. 문자열이 `n_steps`보다 짧으면 0 벡터로 패딩됩니다(나중에, 텐서플로에게 각 문자열의 실제 길이를 `sequence_length` 매개변수로 전달할 것입니다)."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 120,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def string_to_one_hot_vectors(string, n_steps, chars=\"BEPSTVX\"):\n",
|
||
" char_to_index = {char: index for index, char in enumerate(chars)}\n",
|
||
" output = np.zeros((n_steps, len(chars)), dtype=np.int32)\n",
|
||
" for index, char in enumerate(string):\n",
|
||
" output[index, char_to_index[char]] = 1.\n",
|
||
" return output"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 121,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[1, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [1, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 1],\n",
|
||
" [0, 0, 0, 1, 0, 0, 0],\n",
|
||
" [0, 1, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [0, 1, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0]], dtype=int32)"
|
||
]
|
||
},
|
||
"execution_count": 121,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"string_to_one_hot_vectors(\"BTBTXSETE\", 12)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"이제 50%는 올바른 문자열 50%는 잘못된 문자열로 이루어진 데이터셋을 만듭니다:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 122,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def generate_dataset(size):\n",
|
||
" good_strings = [generate_string(embedded_reber_grammar)\n",
|
||
" for _ in range(size // 2)]\n",
|
||
" bad_strings = [generate_corrupted_string(embedded_reber_grammar)\n",
|
||
" for _ in range(size - size // 2)]\n",
|
||
" all_strings = good_strings + bad_strings\n",
|
||
" n_steps = max([len(string) for string in all_strings])\n",
|
||
" X = np.array([string_to_one_hot_vectors(string, n_steps)\n",
|
||
" for string in all_strings])\n",
|
||
" seq_length = np.array([len(string) for string in all_strings])\n",
|
||
" y = np.array([[1] for _ in range(len(good_strings))] +\n",
|
||
" [[0] for _ in range(len(bad_strings))])\n",
|
||
" rnd_idx = np.random.permutation(size)\n",
|
||
" return X[rnd_idx], seq_length[rnd_idx], y[rnd_idx]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 123,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_train, l_train, y_train = generate_dataset(10000)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"첫 번째 훈련 샘플을 확인해 보겠습니다:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 124,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[1, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [1, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 1, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 1, 0],\n",
|
||
" [0, 0, 1, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 1],\n",
|
||
" [0, 0, 0, 0, 0, 1, 0],\n",
|
||
" [0, 0, 1, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 1],\n",
|
||
" [0, 0, 0, 0, 0, 1, 0],\n",
|
||
" [0, 0, 1, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 1],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [0, 0, 1, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 1],\n",
|
||
" [0, 0, 0, 0, 0, 1, 0],\n",
|
||
" [0, 0, 0, 0, 0, 1, 0],\n",
|
||
" [0, 1, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [0, 1, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0]], dtype=int32)"
|
||
]
|
||
},
|
||
"execution_count": 124,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"X_train[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"데이터셋에서 가장 긴 문자열 때문에 패딩된 0 벡터가 많습니다. 문자열 길이가 얼마나 될까요?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 125,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"23"
|
||
]
|
||
},
|
||
"execution_count": 125,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"l_train[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"타깃 클래스는?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 126,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([0])"
|
||
]
|
||
},
|
||
"execution_count": 126,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"y_train[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"아주 좋습니다! 올바른 문자열을 구분할 RNN을 만들 준비가 되었습니다. 앞서 MNIST 이미지를 분류하기 위해 만든 것과 매우 비슷한 시퀀스 분류기를 만듭니다. 차이점은 다음 두 가지입니다:\n",
|
||
"* 첫째, 입력 문자열이 가변 길이이므로 `dynamic_rnn()` 함수를 호출할 때 `sequence_length`를 지정해야 합니다.\n",
|
||
"* 둘째, 이진 분류기이므로 출력 뉴런은 하나만 필요합니다. 이 뉴런은 각 문자열에 대해 올바른 문자열일 추정 로그 확률을 출력할 것입니다. 다중 클래스 분류에서는 `sparse_softmax_cross_entropy_with_logits()`를 사용했지만 이진 분류에서는 `sigmoid_cross_entropy_with_logits()`를 사용합니다."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 127,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"possible_chars = \"BEPSTVX\"\n",
|
||
"n_inputs = len(possible_chars)\n",
|
||
"n_neurons = 30\n",
|
||
"n_outputs = 1\n",
|
||
"\n",
|
||
"learning_rate = 0.02\n",
|
||
"momentum = 0.95\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, None, n_inputs], name=\"X\")\n",
|
||
"seq_length = tf.placeholder(tf.int32, [None], name=\"seq_length\")\n",
|
||
"y = tf.placeholder(tf.float32, [None, 1], name=\"y\")\n",
|
||
"\n",
|
||
"gru_cell = tf.contrib.rnn.GRUCell(num_units=n_neurons)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(gru_cell, X, dtype=tf.float32,\n",
|
||
" sequence_length=seq_length)\n",
|
||
"\n",
|
||
"logits = tf.layers.dense(states, n_outputs, name=\"logits\")\n",
|
||
"y_pred = tf.cast(tf.greater(logits, 0.), tf.float32, name=\"y_pred\")\n",
|
||
"y_proba = tf.nn.sigmoid(logits, name=\"y_proba\")\n",
|
||
"\n",
|
||
"xentropy = tf.nn.sigmoid_cross_entropy_with_logits(labels=y, logits=logits)\n",
|
||
"loss = tf.reduce_mean(xentropy, name=\"loss\")\n",
|
||
"optimizer = tf.train.MomentumOptimizer(learning_rate=learning_rate,\n",
|
||
" momentum=momentum,\n",
|
||
" use_nesterov=True)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"correct = tf.equal(y_pred, y, name=\"correct\")\n",
|
||
"accuracy = tf.reduce_mean(tf.cast(correct, tf.float32), name=\"accuracy\")\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()\n",
|
||
"saver = tf.train.Saver()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"훈련하는 동안 진척 상황을 확인할 수 있도록 검증 세트를 만듭니다:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 128,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_val, l_val, y_val = generate_dataset(5000)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 132,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" 0 훈련 손실: 0.6798, 정확도: 58.00% 검증 세트 정확도: 58.60%\n",
|
||
" 1 훈련 손실: 0.6454, 정확도: 60.00% 검증 세트 정확도: 61.82%\n",
|
||
" 2 훈련 손실: 0.5676, 정확도: 80.00% 검증 세트 정확도: 69.98%\n",
|
||
" 3 훈련 손실: 0.4996, 정확도: 78.00% 검증 세트 정확도: 79.56%\n",
|
||
" 4 훈련 손실: 0.4083, 정확도: 86.00% 검증 세트 정확도: 86.26%\n",
|
||
" 5 훈련 손실: 0.3434, 정확도: 84.00% 검증 세트 정확도: 85.70%\n",
|
||
" 6 훈련 손실: 0.2667, 정확도: 90.00% 검증 세트 정확도: 89.78%\n",
|
||
" 7 훈련 손실: 0.2397, 정확도: 90.00% 검증 세트 정확도: 90.44%\n",
|
||
" 8 훈련 손실: 0.0917, 정확도: 98.00% 검증 세트 정확도: 95.74%\n",
|
||
" 9 훈련 손실: 0.1826, 정확도: 96.00% 검증 세트 정확도: 94.10%\n",
|
||
" 10 훈련 손실: 0.0136, 정확도: 100.00% 검증 세트 정확도: 98.52%\n",
|
||
" 11 훈련 손실: 0.0161, 정확도: 100.00% 검증 세트 정확도: 98.14%\n",
|
||
" 12 훈련 손실: 0.0113, 정확도: 100.00% 검증 세트 정확도: 98.62%\n",
|
||
" 13 훈련 손실: 0.0155, 정확도: 100.00% 검증 세트 정확도: 99.26%\n",
|
||
" 14 훈련 손실: 0.0089, 정확도: 100.00% 검증 세트 정확도: 99.26%\n",
|
||
" 15 훈련 손실: 0.0072, 정확도: 100.00% 검증 세트 정확도: 99.00%\n",
|
||
" 16 훈련 손실: 0.0019, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 17 훈련 손실: 0.0009, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 18 훈련 손실: 0.0007, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 19 훈련 손실: 0.0006, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 20 훈련 손실: 0.0005, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 21 훈련 손실: 0.0004, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 22 훈련 손실: 0.0004, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 23 훈련 손실: 0.0004, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 24 훈련 손실: 0.0003, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 25 훈련 손실: 0.0003, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 26 훈련 손실: 0.0003, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 27 훈련 손실: 0.0003, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 28 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 29 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 30 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 31 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 32 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 33 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 34 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 35 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 36 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 37 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 38 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 39 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 40 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 41 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 42 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 43 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 44 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 45 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 46 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 47 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 48 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
|
||
" 49 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_epochs = 50\n",
|
||
"batch_size = 50\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" for epoch in range(n_epochs):\n",
|
||
" X_batches = np.array_split(X_train, len(X_train) // batch_size)\n",
|
||
" l_batches = np.array_split(l_train, len(l_train) // batch_size)\n",
|
||
" y_batches = np.array_split(y_train, len(y_train) // batch_size)\n",
|
||
" for X_batch, l_batch, y_batch in zip(X_batches, l_batches, y_batches):\n",
|
||
" loss_val, _ = sess.run(\n",
|
||
" [loss, training_op],\n",
|
||
" feed_dict={X: X_batch, seq_length: l_batch, y: y_batch})\n",
|
||
" acc_train = accuracy.eval(feed_dict={X: X_batch, seq_length: l_batch, y: y_batch})\n",
|
||
" acc_val = accuracy.eval(feed_dict={X: X_val, seq_length: l_val, y: y_val})\n",
|
||
" print(\"{:4d} 훈련 손실: {:.4f}, 정확도: {:.2f}% 검증 세트 정확도: {:.2f}%\".format(\n",
|
||
" epoch, loss_val, 100 * acc_train, 100 * acc_val))\n",
|
||
" saver.save(sess, \"./my_reber_classifier\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"이제 두 개의 문자열에 이 RNN을 테스트해 보죠. 첫 번째는 잘못된 것이고 두 번째는 올바른 것입니다. 이 문자열은 마지막에서 두 번째 글자만 다릅니다. RNN이 이를 맞춘다면 두 번째 문자가 항상 끝에서 두 번째 문자와 같아야 한다는 패턴을 알게 됐다는 것을 의미합니다. 이렇게 하려면 꽤 긴 단기 기억(long short-term memory)이 필요합니다(그래서 GRU 셀을 사용했습니다)."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 133,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:tensorflow:Restoring parameters from my_reber_classifier\n",
|
||
"\n",
|
||
"레버 문자열일 추정 확률:\n",
|
||
"BPBTSSSSSSSSSSSSXXTTTTTVPXTTVPXTTTTTTTVPXVPXVPXTTTVVETE: 0.00%\n",
|
||
"BPBTSSSSSSSSSSSSXXTTTTTVPXTTVPXTTTTTTTVPXVPXVPXTTTVVEPE: 1.00%\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"test_strings = [\n",
|
||
" \"BPBTSSSSSSSSSSSSXXTTTTTVPXTTVPXTTTTTTTVPXVPXVPXTTTVVETE\",\n",
|
||
" \"BPBTSSSSSSSSSSSSXXTTTTTVPXTTVPXTTTTTTTVPXVPXVPXTTTVVEPE\"]\n",
|
||
"l_test = np.array([len(s) for s in test_strings])\n",
|
||
"max_length = l_test.max()\n",
|
||
"X_test = [string_to_one_hot_vectors(s, n_steps=max_length)\n",
|
||
" for s in test_strings]\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" saver.restore(sess, \"my_reber_classifier\")\n",
|
||
" y_proba_val = y_proba.eval(feed_dict={X: X_test, seq_length: l_test})\n",
|
||
"\n",
|
||
"print()\n",
|
||
"print(\"레버 문자열일 추정 확률:\")\n",
|
||
"for index, string in enumerate(test_strings):\n",
|
||
" print(\"{}: {:.2f}%\".format(string, y_proba_val[index][0]))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"쨘! 잘 작동하네요. 이 RNN이 완벽한 신뢰도로 정확한 답을 냈습니다. :)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 8. 과 9."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Coming soon..."
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.5.5"
|
||
},
|
||
"nav_menu": {},
|
||
"toc": {
|
||
"navigate_menu": true,
|
||
"number_sections": true,
|
||
"sideBar": true,
|
||
"threshold": 6,
|
||
"toc_cell": false,
|
||
"toc_section_display": "block",
|
||
"toc_window_display": false
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 1
|
||
}
|