Files
hands-on/14_recurrent_neural_networks.ipynb
2018-05-24 14:53:08 +09:00

3483 lines
625 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPython 3.6.5\n",
"IPython 6.4.0\n",
"\n",
"numpy 1.14.3\n",
"sklearn 0.19.1\n",
"scipy 1.1.0\n",
"matplotlib 2.2.2\n",
"tensorflow 1.8.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": [],
"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 tensorflow_graph_in_jupyter import show_graph"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"\n",
" <script src=&quot;//cdnjs.cloudflare.com/ajax/libs/polymer/0.3.3/platform.js&quot;></script>\n",
" <script>\n",
" function load() {\n",
" document.getElementById(&quot;graph0.3745401188473625&quot;).pbtxt = 'node {\\n name: &quot;Placeholder&quot;\\n op: &quot;Placeholder&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;shape&quot;\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 3\\n }\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;Placeholder_1&quot;\\n op: &quot;Placeholder&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;shape&quot;\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 3\\n }\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/Shape&quot;\\n op: &quot;Shape&quot;\\n input: &quot;Placeholder&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;out_type&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/strided_slice/stack&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice/stack_1&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice/stack_2&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice&quot;\\n op: &quot;StridedSlice&quot;\\n input: &quot;rnn/Shape&quot;\\n input: &quot;rnn/strided_slice/stack&quot;\\n input: &quot;rnn/strided_slice/stack_1&quot;\\n input: &quot;rnn/strided_slice/stack_2&quot;\\n attr {\\n key: &quot;Index&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;begin_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;ellipsis_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;end_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;new_axis_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;shrink_axis_mask&quot;\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n op: &quot;ExpandDims&quot;\\n input: &quot;rnn/strided_slice&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;Tdim&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n op: &quot;ConcatV2&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n op: &quot;Fill&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;index_type&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1&quot;\\n op: &quot;ExpandDims&quot;\\n input: &quot;rnn/strided_slice&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;Tdim&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/Const_1&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: &quot;\\\\010\\\\000\\\\000\\\\000\\\\005\\\\000\\\\000\\\\000&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: -0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n op: &quot;RandomUniform&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;seed&quot;\\n value {\\n i: 42\\n }\\n }\\n attr {\\n key: &quot;seed2&quot;\\n value {\\n i: 20\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n op: &quot;Sub&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n op: &quot;Mul&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n op: &quot;Add&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel&quot;\\n op: &quot;VariableV2&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;container&quot;\\n value {\\n s: &quot;&quot;\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;shape&quot;\\n value {\\n shape {\\n dim {\\n size: 8\\n }\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: &quot;shared_name&quot;\\n value {\\n s: &quot;&quot;\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Assign&quot;\\n op: &quot;Assign&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;use_locking&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;validate_shape&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n op: &quot;Identity&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/bias&quot;\\n op: &quot;VariableV2&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;container&quot;\\n value {\\n s: &quot;&quot;\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;shape&quot;\\n value {\\n shape {\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: &quot;shared_name&quot;\\n value {\\n s: &quot;&quot;\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/bias/Assign&quot;\\n op: &quot;Assign&quot;\\n input: &quot;rnn/basic_rnn_cell/bias&quot;\\n input: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;use_locking&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;validate_shape&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n op: &quot;Identity&quot;\\n input: &quot;rnn/basic_rnn_cell/bias&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/concat/axis&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/concat&quot;\\n op: &quot;ConcatV2&quot;\\n input: &quot;Placeholder&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n input: &quot;rnn/basic_rnn_cell/concat/axis&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/MatMul&quot;\\n op: &quot;MatMul&quot;\\n input: &quot;rnn/basic_rnn_cell/concat&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;transpose_a&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;transpose_b&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/BiasAdd&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;rnn/basic_rnn_cell/MatMul&quot;\\n input: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;data_format&quot;\\n value {\\n s: &quot;NHWC&quot;\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/Tanh&quot;\\n op: &quot;Tanh&quot;\\n input: &quot;rnn/basic_rnn_cell/BiasAdd&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/concat_1/axis&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/concat_1&quot;\\n op: &quot;ConcatV2&quot;\\n input: &quot;Placeholder_1&quot;\\n input: &quot;rnn/basic_rnn_cell/Tanh&quot;\\n input: &quot;rnn/basic_rnn_cell/concat_1/axis&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/MatMul_1&quot;\\n op: &quot;MatMul&quot;\\n input: &quot;rnn/basic_rnn_cell/concat_1&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;transpose_a&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;transpose_b&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/BiasAdd_1&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;rnn/basic_rnn_cell/MatMul_1&quot;\\n input: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;data_format&quot;\\n value {\\n s: &quot;NHWC&quot;\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/Tanh_1&quot;\\n op: &quot;Tanh&quot;\\n input: &quot;rnn/basic_rnn_cell/BiasAdd_1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;init&quot;\\n op: &quot;NoOp&quot;\\n input: &quot;^rnn/basic_rnn_cell/bias/Assign&quot;\\n input: &quot;^rnn/basic_rnn_cell/kernel/Assign&quot;\\n}\\n';\n",
" }\n",
" </script>\n",
" <link rel=&quot;import&quot; href=&quot;https://tensorboard.appspot.com/tf-graph-basic.build.html&quot; onload=load()>\n",
" <div style=&quot;height:600px&quot;>\n",
" <tf-graph-basic id=&quot;graph0.3745401188473625&quot;></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": {
"scrolled": true
},
"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 src=&quot;//cdnjs.cloudflare.com/ajax/libs/polymer/0.3.3/platform.js&quot;></script>\n",
" <script>\n",
" function load() {\n",
" document.getElementById(&quot;graph0.3745401188473625&quot;).pbtxt = 'node {\\n name: &quot;Placeholder&quot;\\n op: &quot;Placeholder&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;shape&quot;\\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: &quot;rnn/Rank&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/range/start&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 2\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/range/delta&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/range&quot;\\n op: &quot;Range&quot;\\n input: &quot;rnn/range/start&quot;\\n input: &quot;rnn/Rank&quot;\\n input: &quot;rnn/range/delta&quot;\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/concat/values_0&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: &quot;\\\\001\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/concat/axis&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/concat&quot;\\n op: &quot;ConcatV2&quot;\\n input: &quot;rnn/concat/values_0&quot;\\n input: &quot;rnn/range&quot;\\n input: &quot;rnn/concat/axis&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/transpose&quot;\\n op: &quot;Transpose&quot;\\n input: &quot;Placeholder&quot;\\n input: &quot;rnn/concat&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;Tperm&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/Shape&quot;\\n op: &quot;Shape&quot;\\n input: &quot;rnn/transpose&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;out_type&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/strided_slice/stack&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice/stack_1&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice/stack_2&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice&quot;\\n op: &quot;StridedSlice&quot;\\n input: &quot;rnn/Shape&quot;\\n input: &quot;rnn/strided_slice/stack&quot;\\n input: &quot;rnn/strided_slice/stack_1&quot;\\n input: &quot;rnn/strided_slice/stack_2&quot;\\n attr {\\n key: &quot;Index&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;begin_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;ellipsis_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;end_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;new_axis_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;shrink_axis_mask&quot;\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n op: &quot;ExpandDims&quot;\\n input: &quot;rnn/strided_slice&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/ExpandDims/dim&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;Tdim&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n op: &quot;ConcatV2&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/ExpandDims&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/Const&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/concat/axis&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n op: &quot;Fill&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/concat&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/zeros/Const&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;index_type&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1&quot;\\n op: &quot;ExpandDims&quot;\\n input: &quot;rnn/strided_slice&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/ExpandDims_1/dim&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;Tdim&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/BasicRNNCellZeroState/Const_1&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/Shape_1&quot;\\n op: &quot;Shape&quot;\\n input: &quot;rnn/transpose&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;out_type&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/strided_slice_1/stack&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice_1/stack_1&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice_1/stack_2&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice_1&quot;\\n op: &quot;StridedSlice&quot;\\n input: &quot;rnn/Shape_1&quot;\\n input: &quot;rnn/strided_slice_1/stack&quot;\\n input: &quot;rnn/strided_slice_1/stack_1&quot;\\n input: &quot;rnn/strided_slice_1/stack_2&quot;\\n attr {\\n key: &quot;Index&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;begin_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;ellipsis_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;end_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;new_axis_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;shrink_axis_mask&quot;\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/Shape_2&quot;\\n op: &quot;Shape&quot;\\n input: &quot;rnn/transpose&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;out_type&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/strided_slice_2/stack&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice_2/stack_1&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice_2/stack_2&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/strided_slice_2&quot;\\n op: &quot;StridedSlice&quot;\\n input: &quot;rnn/Shape_2&quot;\\n input: &quot;rnn/strided_slice_2/stack&quot;\\n input: &quot;rnn/strided_slice_2/stack_1&quot;\\n input: &quot;rnn/strided_slice_2/stack_2&quot;\\n attr {\\n key: &quot;Index&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;begin_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;ellipsis_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;end_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;new_axis_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;shrink_axis_mask&quot;\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/ExpandDims/dim&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/ExpandDims&quot;\\n op: &quot;ExpandDims&quot;\\n input: &quot;rnn/strided_slice_2&quot;\\n input: &quot;rnn/ExpandDims/dim&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;Tdim&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/Const&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/concat_1/axis&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/concat_1&quot;\\n op: &quot;ConcatV2&quot;\\n input: &quot;rnn/ExpandDims&quot;\\n input: &quot;rnn/Const&quot;\\n input: &quot;rnn/concat_1/axis&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/zeros/Const&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/zeros&quot;\\n op: &quot;Fill&quot;\\n input: &quot;rnn/concat_1&quot;\\n input: &quot;rnn/zeros/Const&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;index_type&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/time&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArray&quot;\\n op: &quot;TensorArrayV3&quot;\\n input: &quot;rnn/strided_slice_1&quot;\\n attr {\\n key: &quot;clear_after_read&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;dynamic_size&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;element_shape&quot;\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: &quot;identical_element_shapes&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;tensor_array_name&quot;\\n value {\\n s: &quot;rnn/dynamic_rnn/output_0&quot;\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArray_1&quot;\\n op: &quot;TensorArrayV3&quot;\\n input: &quot;rnn/strided_slice_1&quot;\\n attr {\\n key: &quot;clear_after_read&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;dynamic_size&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;element_shape&quot;\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 3\\n }\\n }\\n }\\n }\\n attr {\\n key: &quot;identical_element_shapes&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;tensor_array_name&quot;\\n value {\\n s: &quot;rnn/dynamic_rnn/input_0&quot;\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArrayUnstack/Shape&quot;\\n op: &quot;Shape&quot;\\n input: &quot;rnn/transpose&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;out_type&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArrayUnstack/strided_slice/stack&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/TensorArrayUnstack/strided_slice/stack_1&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/TensorArrayUnstack/strided_slice/stack_2&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/TensorArrayUnstack/strided_slice&quot;\\n op: &quot;StridedSlice&quot;\\n input: &quot;rnn/TensorArrayUnstack/Shape&quot;\\n input: &quot;rnn/TensorArrayUnstack/strided_slice/stack&quot;\\n input: &quot;rnn/TensorArrayUnstack/strided_slice/stack_1&quot;\\n input: &quot;rnn/TensorArrayUnstack/strided_slice/stack_2&quot;\\n attr {\\n key: &quot;Index&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;begin_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;ellipsis_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;end_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;new_axis_mask&quot;\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: &quot;shrink_axis_mask&quot;\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArrayUnstack/range/start&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArrayUnstack/range/delta&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArrayUnstack/range&quot;\\n op: &quot;Range&quot;\\n input: &quot;rnn/TensorArrayUnstack/range/start&quot;\\n input: &quot;rnn/TensorArrayUnstack/strided_slice&quot;\\n input: &quot;rnn/TensorArrayUnstack/range/delta&quot;\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3&quot;\\n op: &quot;TensorArrayScatterV3&quot;\\n input: &quot;rnn/TensorArray_1&quot;\\n input: &quot;rnn/TensorArrayUnstack/range&quot;\\n input: &quot;rnn/transpose&quot;\\n input: &quot;rnn/TensorArray_1:1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/transpose&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/Maximum/x&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/Maximum&quot;\\n op: &quot;Maximum&quot;\\n input: &quot;rnn/Maximum/x&quot;\\n input: &quot;rnn/strided_slice_1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/Minimum&quot;\\n op: &quot;Minimum&quot;\\n input: &quot;rnn/strided_slice_1&quot;\\n input: &quot;rnn/Maximum&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/iteration_counter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Enter&quot;\\n op: &quot;Enter&quot;\\n input: &quot;rnn/while/iteration_counter&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;frame_name&quot;\\n value {\\n s: &quot;rnn/while/while_context&quot;\\n }\\n }\\n attr {\\n key: &quot;is_constant&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;parallel_iterations&quot;\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Enter_1&quot;\\n op: &quot;Enter&quot;\\n input: &quot;rnn/time&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;frame_name&quot;\\n value {\\n s: &quot;rnn/while/while_context&quot;\\n }\\n }\\n attr {\\n key: &quot;is_constant&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;parallel_iterations&quot;\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Enter_2&quot;\\n op: &quot;Enter&quot;\\n input: &quot;rnn/TensorArray:1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;frame_name&quot;\\n value {\\n s: &quot;rnn/while/while_context&quot;\\n }\\n }\\n attr {\\n key: &quot;is_constant&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;parallel_iterations&quot;\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Enter_3&quot;\\n op: &quot;Enter&quot;\\n input: &quot;rnn/BasicRNNCellZeroState/zeros&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;frame_name&quot;\\n value {\\n s: &quot;rnn/while/while_context&quot;\\n }\\n }\\n attr {\\n key: &quot;is_constant&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;parallel_iterations&quot;\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Merge&quot;\\n op: &quot;Merge&quot;\\n input: &quot;rnn/while/Enter&quot;\\n input: &quot;rnn/while/NextIteration&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Merge_1&quot;\\n op: &quot;Merge&quot;\\n input: &quot;rnn/while/Enter_1&quot;\\n input: &quot;rnn/while/NextIteration_1&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Merge_2&quot;\\n op: &quot;Merge&quot;\\n input: &quot;rnn/while/Enter_2&quot;\\n input: &quot;rnn/while/NextIteration_2&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Merge_3&quot;\\n op: &quot;Merge&quot;\\n input: &quot;rnn/while/Enter_3&quot;\\n input: &quot;rnn/while/NextIteration_3&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Less&quot;\\n op: &quot;Less&quot;\\n input: &quot;rnn/while/Merge&quot;\\n input: &quot;rnn/while/Less/Enter&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Less/Enter&quot;\\n op: &quot;Enter&quot;\\n input: &quot;rnn/strided_slice_1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;frame_name&quot;\\n value {\\n s: &quot;rnn/while/while_context&quot;\\n }\\n }\\n attr {\\n key: &quot;is_constant&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;parallel_iterations&quot;\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Less_1&quot;\\n op: &quot;Less&quot;\\n input: &quot;rnn/while/Merge_1&quot;\\n input: &quot;rnn/while/Less_1/Enter&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Less_1/Enter&quot;\\n op: &quot;Enter&quot;\\n input: &quot;rnn/Minimum&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;frame_name&quot;\\n value {\\n s: &quot;rnn/while/while_context&quot;\\n }\\n }\\n attr {\\n key: &quot;is_constant&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;parallel_iterations&quot;\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/LogicalAnd&quot;\\n op: &quot;LogicalAnd&quot;\\n input: &quot;rnn/while/Less&quot;\\n input: &quot;rnn/while/Less_1&quot;\\n}\\nnode {\\n name: &quot;rnn/while/LoopCond&quot;\\n op: &quot;LoopCond&quot;\\n input: &quot;rnn/while/LogicalAnd&quot;\\n}\\nnode {\\n name: &quot;rnn/while/Switch&quot;\\n op: &quot;Switch&quot;\\n input: &quot;rnn/while/Merge&quot;\\n input: &quot;rnn/while/LoopCond&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/while/Merge&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Switch_1&quot;\\n op: &quot;Switch&quot;\\n input: &quot;rnn/while/Merge_1&quot;\\n input: &quot;rnn/while/LoopCond&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/while/Merge_1&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Switch_2&quot;\\n op: &quot;Switch&quot;\\n input: &quot;rnn/while/Merge_2&quot;\\n input: &quot;rnn/while/LoopCond&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/while/Merge_2&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Switch_3&quot;\\n op: &quot;Switch&quot;\\n input: &quot;rnn/while/Merge_3&quot;\\n input: &quot;rnn/while/LoopCond&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/while/Merge_3&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Identity&quot;\\n op: &quot;Identity&quot;\\n input: &quot;rnn/while/Switch:1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Identity_1&quot;\\n op: &quot;Identity&quot;\\n input: &quot;rnn/while/Switch_1:1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Identity_2&quot;\\n op: &quot;Identity&quot;\\n input: &quot;rnn/while/Switch_2:1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Identity_3&quot;\\n op: &quot;Identity&quot;\\n input: &quot;rnn/while/Switch_3:1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/add/y&quot;\\n op: &quot;Const&quot;\\n input: &quot;^rnn/while/Identity&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/add&quot;\\n op: &quot;Add&quot;\\n input: &quot;rnn/while/Identity&quot;\\n input: &quot;rnn/while/add/y&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/TensorArrayReadV3&quot;\\n op: &quot;TensorArrayReadV3&quot;\\n input: &quot;rnn/while/TensorArrayReadV3/Enter&quot;\\n input: &quot;rnn/while/Identity_1&quot;\\n input: &quot;rnn/while/TensorArrayReadV3/Enter_1&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/TensorArrayReadV3/Enter&quot;\\n op: &quot;Enter&quot;\\n input: &quot;rnn/TensorArray_1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_RESOURCE\\n }\\n }\\n attr {\\n key: &quot;frame_name&quot;\\n value {\\n s: &quot;rnn/while/while_context&quot;\\n }\\n }\\n attr {\\n key: &quot;is_constant&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;parallel_iterations&quot;\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/TensorArrayReadV3/Enter_1&quot;\\n op: &quot;Enter&quot;\\n input: &quot;rnn/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;frame_name&quot;\\n value {\\n s: &quot;rnn/while/while_context&quot;\\n }\\n }\\n attr {\\n key: &quot;is_constant&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;parallel_iterations&quot;\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: &quot;\\\\010\\\\000\\\\000\\\\000\\\\005\\\\000\\\\000\\\\000&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: -0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n op: &quot;RandomUniform&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;seed&quot;\\n value {\\n i: 42\\n }\\n }\\n attr {\\n key: &quot;seed2&quot;\\n value {\\n i: 87\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n op: &quot;Sub&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n op: &quot;Mul&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n op: &quot;Add&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel&quot;\\n op: &quot;VariableV2&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;container&quot;\\n value {\\n s: &quot;&quot;\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;shape&quot;\\n value {\\n shape {\\n dim {\\n size: 8\\n }\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: &quot;shared_name&quot;\\n value {\\n s: &quot;&quot;\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/Assign&quot;\\n op: &quot;Assign&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/Initializer/random_uniform&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/kernel&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;use_locking&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;validate_shape&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n op: &quot;Identity&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/bias&quot;\\n op: &quot;VariableV2&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;container&quot;\\n value {\\n s: &quot;&quot;\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;shape&quot;\\n value {\\n shape {\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: &quot;shared_name&quot;\\n value {\\n s: &quot;&quot;\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/bias/Assign&quot;\\n op: &quot;Assign&quot;\\n input: &quot;rnn/basic_rnn_cell/bias&quot;\\n input: &quot;rnn/basic_rnn_cell/bias/Initializer/zeros&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/basic_rnn_cell/bias&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;use_locking&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;validate_shape&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n op: &quot;Identity&quot;\\n input: &quot;rnn/basic_rnn_cell/bias&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/basic_rnn_cell/concat/axis&quot;\\n op: &quot;Const&quot;\\n input: &quot;^rnn/while/Identity&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/basic_rnn_cell/concat&quot;\\n op: &quot;ConcatV2&quot;\\n input: &quot;rnn/while/TensorArrayReadV3&quot;\\n input: &quot;rnn/while/Identity_3&quot;\\n input: &quot;rnn/while/basic_rnn_cell/concat/axis&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/basic_rnn_cell/MatMul&quot;\\n op: &quot;MatMul&quot;\\n input: &quot;rnn/while/basic_rnn_cell/concat&quot;\\n input: &quot;rnn/while/basic_rnn_cell/MatMul/Enter&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;transpose_a&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;transpose_b&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/basic_rnn_cell/MatMul/Enter&quot;\\n op: &quot;Enter&quot;\\n input: &quot;rnn/basic_rnn_cell/kernel/read&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;frame_name&quot;\\n value {\\n s: &quot;rnn/while/while_context&quot;\\n }\\n }\\n attr {\\n key: &quot;is_constant&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;parallel_iterations&quot;\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/basic_rnn_cell/BiasAdd&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;rnn/while/basic_rnn_cell/MatMul&quot;\\n input: &quot;rnn/while/basic_rnn_cell/BiasAdd/Enter&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;data_format&quot;\\n value {\\n s: &quot;NHWC&quot;\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/basic_rnn_cell/BiasAdd/Enter&quot;\\n op: &quot;Enter&quot;\\n input: &quot;rnn/basic_rnn_cell/bias/read&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;frame_name&quot;\\n value {\\n s: &quot;rnn/while/while_context&quot;\\n }\\n }\\n attr {\\n key: &quot;is_constant&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;parallel_iterations&quot;\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/basic_rnn_cell/Tanh&quot;\\n op: &quot;Tanh&quot;\\n input: &quot;rnn/while/basic_rnn_cell/BiasAdd&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3&quot;\\n op: &quot;TensorArrayWriteV3&quot;\\n input: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3/Enter&quot;\\n input: &quot;rnn/while/Identity_1&quot;\\n input: &quot;rnn/while/basic_rnn_cell/Tanh&quot;\\n input: &quot;rnn/while/Identity_2&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/while/basic_rnn_cell/Tanh&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3/Enter&quot;\\n op: &quot;Enter&quot;\\n input: &quot;rnn/TensorArray&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_RESOURCE\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/while/basic_rnn_cell/Tanh&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;frame_name&quot;\\n value {\\n s: &quot;rnn/while/while_context&quot;\\n }\\n }\\n attr {\\n key: &quot;is_constant&quot;\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: &quot;parallel_iterations&quot;\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/add_1/y&quot;\\n op: &quot;Const&quot;\\n input: &quot;^rnn/while/Identity&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/add_1&quot;\\n op: &quot;Add&quot;\\n input: &quot;rnn/while/Identity_1&quot;\\n input: &quot;rnn/while/add_1/y&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/NextIteration&quot;\\n op: &quot;NextIteration&quot;\\n input: &quot;rnn/while/add&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/NextIteration_1&quot;\\n op: &quot;NextIteration&quot;\\n input: &quot;rnn/while/add_1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/NextIteration_2&quot;\\n op: &quot;NextIteration&quot;\\n input: &quot;rnn/while/TensorArrayWrite/TensorArrayWriteV3&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/NextIteration_3&quot;\\n op: &quot;NextIteration&quot;\\n input: &quot;rnn/while/basic_rnn_cell/Tanh&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Exit&quot;\\n op: &quot;Exit&quot;\\n input: &quot;rnn/while/Switch&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Exit_1&quot;\\n op: &quot;Exit&quot;\\n input: &quot;rnn/while/Switch_1&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Exit_2&quot;\\n op: &quot;Exit&quot;\\n input: &quot;rnn/while/Switch_2&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/while/Exit_3&quot;\\n op: &quot;Exit&quot;\\n input: &quot;rnn/while/Switch_3&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArrayStack/TensorArraySizeV3&quot;\\n op: &quot;TensorArraySizeV3&quot;\\n input: &quot;rnn/TensorArray&quot;\\n input: &quot;rnn/while/Exit_2&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/TensorArray&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArrayStack/range/start&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/TensorArray&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArrayStack/range/delta&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/TensorArray&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArrayStack/range&quot;\\n op: &quot;Range&quot;\\n input: &quot;rnn/TensorArrayStack/range/start&quot;\\n input: &quot;rnn/TensorArrayStack/TensorArraySizeV3&quot;\\n input: &quot;rnn/TensorArrayStack/range/delta&quot;\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/TensorArray&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/TensorArrayStack/TensorArrayGatherV3&quot;\\n op: &quot;TensorArrayGatherV3&quot;\\n input: &quot;rnn/TensorArray&quot;\\n input: &quot;rnn/TensorArrayStack/range&quot;\\n input: &quot;rnn/while/Exit_2&quot;\\n attr {\\n key: &quot;_class&quot;\\n value {\\n list {\\n s: &quot;loc:@rnn/TensorArray&quot;\\n }\\n }\\n }\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;element_shape&quot;\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/Const_1&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\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: &quot;rnn/Rank_1&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/range_1/start&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 2\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/range_1/delta&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/range_1&quot;\\n op: &quot;Range&quot;\\n input: &quot;rnn/range_1/start&quot;\\n input: &quot;rnn/Rank_1&quot;\\n input: &quot;rnn/range_1/delta&quot;\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/concat_2/values_0&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: &quot;\\\\001\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/concat_2/axis&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/concat_2&quot;\\n op: &quot;ConcatV2&quot;\\n input: &quot;rnn/concat_2/values_0&quot;\\n input: &quot;rnn/range_1&quot;\\n input: &quot;rnn/concat_2/axis&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;Tidx&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;rnn/transpose_1&quot;\\n op: &quot;Transpose&quot;\\n input: &quot;rnn/TensorArrayStack/TensorArrayGatherV3&quot;\\n input: &quot;rnn/concat_2&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;Tperm&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: &quot;init&quot;\\n op: &quot;NoOp&quot;\\n input: &quot;^rnn/basic_rnn_cell/bias/Assign&quot;\\n input: &quot;^rnn/basic_rnn_cell/kernel/Assign&quot;\\n}\\n';\n",
" }\n",
" </script>\n",
" <link rel=&quot;import&quot; href=&quot;https://tensorboard.appspot.com/tf-graph-basic.build.html&quot; onload=load()>\n",
" <div style=&quot;height:600px&quot;>\n",
" <tf-graph-basic id=&quot;graph0.3745401188473625&quot;></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": "markdown",
"metadata": {},
"source": [
"주의: `tf.examples.tutorials.mnist`은 삭제될 예정이므로 대신 `tf.keras.datasets.mnist`를 사용하겠습니다."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()\n",
"X_train = X_train.astype(np.float32).reshape(-1, 28*28) / 255.0\n",
"X_test = X_test.astype(np.float32).reshape(-1, 28*28) / 255.0\n",
"y_train = y_train.astype(np.int32)\n",
"y_test = y_test.astype(np.int32)\n",
"X_valid, X_train = X_train[:5000], X_train[5000:]\n",
"y_valid, y_train = y_train[:5000], y_train[5000:]\n",
"X_test = X_test.reshape((-1, n_steps, n_inputs))\n",
"X_valid = X_valid.reshape((-1, n_steps, n_inputs))"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"def shuffle_batch(X, y, batch_size):\n",
" rnd_idx = np.random.permutation(len(X))\n",
" n_batches = len(X) // batch_size\n",
" for batch_idx in np.array_split(rnd_idx, n_batches):\n",
" X_batch, y_batch = X[batch_idx], y[batch_idx]\n",
" yield X_batch, y_batch"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"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": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 배치 데이터 정확도: 0.9533333 검증 세트 정확도: 0.9322\n",
"1 배치 데이터 정확도: 0.96 검증 세트 정확도: 0.953\n",
"2 배치 데이터 정확도: 0.96 검증 세트 정확도: 0.9522\n",
"3 배치 데이터 정확도: 0.97333336 검증 세트 정확도: 0.9562\n",
"4 배치 데이터 정확도: 0.97333336 검증 세트 정확도: 0.9728\n",
"5 배치 데이터 정확도: 0.93333334 검증 세트 정확도: 0.9722\n",
"6 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9538\n",
"7 배치 데이터 정확도: 0.96 검증 세트 정확도: 0.9724\n",
"8 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9706\n",
"9 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9738\n",
"10 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9716\n",
"11 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9782\n",
"12 배치 데이터 정확도: 0.94666666 검증 세트 정확도: 0.972\n",
"13 배치 데이터 정확도: 0.96666664 검증 세트 정확도: 0.9694\n",
"14 배치 데이터 정확도: 0.97333336 검증 세트 정확도: 0.9776\n",
"15 배치 데이터 정확도: 0.97333336 검증 세트 정확도: 0.9736\n",
"16 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9778\n",
"17 배치 데이터 정확도: 0.97333336 검증 세트 정확도: 0.9822\n",
"18 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.977\n",
"19 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9782\n",
"20 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9782\n",
"21 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9794\n",
"22 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9786\n",
"23 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9806\n",
"24 배치 데이터 정확도: 0.96666664 검증 세트 정확도: 0.9748\n",
"25 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9786\n",
"26 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9816\n",
"27 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.979\n",
"28 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9826\n",
"29 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9808\n",
"30 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9814\n",
"31 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9826\n",
"32 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9814\n",
"33 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9814\n",
"34 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9808\n",
"35 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9826\n",
"36 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9766\n",
"37 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9784\n",
"38 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9812\n",
"39 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9746\n",
"40 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9806\n",
"41 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9808\n",
"42 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9848\n",
"43 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9822\n",
"44 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9776\n",
"45 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9824\n",
"46 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.966\n",
"47 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9784\n",
"48 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9824\n",
"49 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9832\n",
"50 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9812\n",
"51 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.983\n",
"52 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9776\n",
"53 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9822\n",
"54 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9802\n",
"55 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9814\n",
"56 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9808\n",
"57 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9812\n",
"58 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9762\n",
"59 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9806\n",
"60 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9794\n",
"61 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9786\n",
"62 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9826\n",
"63 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9808\n",
"64 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9784\n",
"65 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9816\n",
"66 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9812\n",
"67 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.981\n",
"68 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9834\n",
"69 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9724\n",
"70 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9824\n",
"71 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9786\n",
"72 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9804\n",
"73 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9806\n",
"74 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9826\n",
"75 배치 데이터 정확도: 0.96 검증 세트 정확도: 0.9732\n",
"76 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9784\n",
"77 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9804\n",
"78 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9792\n",
"79 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9816\n",
"80 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9764\n",
"81 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.981\n",
"82 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.977\n",
"83 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9806\n",
"84 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9824\n",
"85 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.982\n",
"86 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.977\n",
"87 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.982\n",
"88 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.982\n",
"89 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9802\n",
"90 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9812\n",
"91 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.974\n",
"92 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9792\n",
"93 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9782\n",
"94 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9808\n",
"95 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9754\n",
"96 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9812\n",
"97 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9808\n",
"98 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9766\n",
"99 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.982\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 X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
" X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n",
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
" acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
" acc_valid = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
" print(epoch, \"배치 데이터 정확도:\", acc_batch, \"검증 세트 정확도:\", acc_valid)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 다층 RNN"
]
},
{
"cell_type": "code",
"execution_count": 40,
"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": 41,
"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": 42,
"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": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 배치 데이터 정확도: 0.9533333 검증 세트 정확도: 0.9396\n",
"1 배치 데이터 정확도: 0.97333336 검증 세트 정확도: 0.9706\n",
"2 배치 데이터 정확도: 0.96 검증 세트 정확도: 0.9706\n",
"3 배치 데이터 정확도: 0.9866667 검증 세트 정확도: 0.9768\n",
"4 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9762\n",
"5 배치 데이터 정확도: 0.96666664 검증 세트 정확도: 0.977\n",
"6 배치 데이터 정확도: 0.99333334 검증 세트 정확도: 0.9782\n",
"7 배치 데이터 정확도: 0.97333336 검증 세트 정확도: 0.9756\n",
"8 배치 데이터 정확도: 1.0 검증 세트 정확도: 0.9768\n",
"9 배치 데이터 정확도: 0.98 검증 세트 정확도: 0.9698\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 X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
" X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n",
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
" acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
" acc_valid = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
" print(epoch, \"배치 데이터 정확도:\", acc_batch, \"검증 세트 정확도:\", acc_valid)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 시계열"
]
},
{
"cell_type": "code",
"execution_count": 44,
"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": 45,
"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": 46,
"metadata": {},
"outputs": [],
"source": [
"X_batch, y_batch = next_batch(1, n_steps)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"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": 47,
"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": 48,
"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": 49,
"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": 50,
"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": 51,
"metadata": {},
"outputs": [],
"source": [
"outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"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": 53,
"metadata": {},
"outputs": [],
"source": [
"saver = tf.train.Saver()"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 \tMSE: 11.967253\n",
"100 \tMSE: 0.52263856\n",
"200 \tMSE: 0.15035826\n",
"300 \tMSE: 0.07330807\n",
"400 \tMSE: 0.061679184\n",
"500 \tMSE: 0.0601851\n",
"600 \tMSE: 0.052675217\n",
"700 \tMSE: 0.049734123\n",
"800 \tMSE: 0.050148413\n",
"900 \tMSE: 0.047809374\n",
"1000 \tMSE: 0.04725359\n",
"1100 \tMSE: 0.048051544\n",
"1200 \tMSE: 0.041000407\n",
"1300 \tMSE: 0.048327107\n",
"1400 \tMSE: 0.041979387\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": 55,
"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": 56,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[[-3.4064944],\n",
" [-2.4538734],\n",
" [-1.1136415],\n",
" [ 0.7852232],\n",
" [ 2.141054 ],\n",
" [ 3.095202 ],\n",
" [ 3.4106045],\n",
" [ 3.2899563],\n",
" [ 2.8743505],\n",
" [ 2.2375321],\n",
" [ 1.62449 ],\n",
" [ 1.4870102],\n",
" [ 1.8829906],\n",
" [ 2.6894553],\n",
" [ 3.8737545],\n",
" [ 5.108572 ],\n",
" [ 6.101843 ],\n",
" [ 6.6164374],\n",
" [ 6.5892878],\n",
" [ 6.025601 ]]], dtype=float32)"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred"
]
},
{
"cell_type": "code",
"execution_count": 57,
"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=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": 58,
"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": 59,
"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": 60,
"metadata": {},
"outputs": [],
"source": [
"n_outputs = 1\n",
"learning_rate = 0.001"
]
},
{
"cell_type": "code",
"execution_count": 61,
"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": 62,
"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": 63,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 \tMSE: 13.907028\n",
"100 \tMSE: 0.50569606\n",
"200 \tMSE: 0.20935346\n",
"300 \tMSE: 0.10330014\n",
"400 \tMSE: 0.067590885\n",
"500 \tMSE: 0.06286829\n",
"600 \tMSE: 0.055545136\n",
"700 \tMSE: 0.049514588\n",
"800 \tMSE: 0.0508121\n",
"900 \tMSE: 0.04805031\n",
"1000 \tMSE: 0.04838902\n",
"1100 \tMSE: 0.05005768\n",
"1200 \tMSE: 0.041468404\n",
"1300 \tMSE: 0.049058773\n",
"1400 \tMSE: 0.043502405\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": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[[-3.431959 ],\n",
" [-2.4690647 ],\n",
" [-1.1380104 ],\n",
" [ 0.65690804],\n",
" [ 2.1736934 ],\n",
" [ 3.1103761 ],\n",
" [ 3.511797 ],\n",
" [ 3.3555346 ],\n",
" [ 2.8142295 ],\n",
" [ 2.2462704 ],\n",
" [ 1.7033141 ],\n",
" [ 1.5530895 ],\n",
" [ 1.8592198 ],\n",
" [ 2.6893895 ],\n",
" [ 3.9221995 ],\n",
" [ 5.1709127 ],\n",
" [ 6.1421275 ],\n",
" [ 6.6739774 ],\n",
" [ 6.6428204 ],\n",
" [ 6.056917 ]]], dtype=float32)"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred"
]
},
{
"cell_type": "code",
"execution_count": 65,
"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": 66,
"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": 67,
"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": 68,
"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": 69,
"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": 70,
"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": 71,
"metadata": {},
"outputs": [],
"source": [
"init = tf.global_variables_initializer()"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [],
"source": [
"X_batch = np.random.rand(2, n_steps, n_inputs)"
]
},
{
"cell_type": "code",
"execution_count": 73,
"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": 74,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(2, 5, 100)"
]
},
"execution_count": 74,
"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": 75,
"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": 76,
"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": 77,
"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": 78,
"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": 79,
"metadata": {},
"outputs": [],
"source": [
"init = tf.global_variables_initializer()"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[[-3.29020061e-02 1.17019236e-01 -4.58992608e-02 ... 3.84477153e-02\n",
" -5.24900258e-02 5.80436960e-02]\n",
" [ 3.54288332e-02 -7.42610693e-02 -6.42375052e-02 ... -2.45757148e-01\n",
" -1.77626804e-01 -3.26535292e-03]\n",
" [ 2.59726584e-01 1.44605249e-01 3.29312116e-01 ... 3.38821977e-01\n",
" 5.98853417e-02 -8.31450596e-02]\n",
" ...\n",
" [ 1.18043743e-01 -2.41663873e-01 -8.27798247e-01 ... -1.85782462e-01\n",
" 1.89682379e-01 -1.35261893e-01]\n",
" [ 2.87830859e-01 3.92953992e-01 -3.15236300e-01 ... -7.85605535e-02\n",
" 4.32724983e-01 -6.61824420e-02]\n",
" [ 7.49779761e-01 6.11052871e-01 -3.01685542e-01 ... 1.95649698e-01\n",
" -1.62457466e-01 -5.23968339e-02]]\n",
"\n",
" [[-6.68027624e-02 7.35576972e-02 -2.90275402e-02 ... -7.79968277e-02\n",
" -3.65773253e-02 -4.66752201e-02]\n",
" [ 1.71546549e-01 4.28418722e-03 2.18812120e-03 ... 3.68538052e-02\n",
" -8.13241452e-02 9.01001915e-02]\n",
" [ 3.45635489e-02 -9.57525298e-02 1.59450233e-01 ... 1.63022086e-01\n",
" -6.83046281e-02 1.07990295e-01]\n",
" ...\n",
" [ 1.96414590e-01 -2.15230390e-01 -5.82537949e-01 ... 3.02532643e-01\n",
" 5.47862291e-01 -1.06282756e-02]\n",
" [ 2.01206997e-01 2.52655987e-02 -5.02945222e-02 ... 9.56110135e-02\n",
" -2.03766495e-01 -1.52696133e-01]\n",
" [ 4.77758050e-01 1.66605622e-01 -1.56402126e-01 ... 1.67080894e-01\n",
" -2.03233853e-01 7.59940522e-05]]]\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": 81,
"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": 82,
"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": 83,
"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": 84,
"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": 85,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 훈련 MSE: 16.386942\n",
"100 훈련 MSE: 4.2520323\n",
"200 훈련 MSE: 3.1802638\n",
"300 훈련 MSE: 3.6099694\n",
"400 훈련 MSE: 2.6209927\n",
"500 훈련 MSE: 3.9321635\n",
"600 훈련 MSE: 3.4960508\n",
"700 훈련 MSE: 3.74506\n",
"800 훈련 MSE: 3.7983377\n",
"900 훈련 MSE: 3.7446787\n",
"1000 훈련 MSE: 2.978341\n",
"1100 훈련 MSE: 3.128917\n",
"1200 훈련 MSE: 2.8941476\n",
"1300 훈련 MSE: 2.983209\n",
"1400 훈련 MSE: 3.717488\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": 86,
"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": 87,
"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": 88,
"metadata": {},
"outputs": [],
"source": [
"reset_graph()\n",
"\n",
"lstm_cell = tf.contrib.rnn.BasicLSTMCell(num_units=n_neurons)"
]
},
{
"cell_type": "code",
"execution_count": 89,
"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": 90,
"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": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"states"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<tf.Tensor 'rnn/while/Exit_8:0' shape=(?, 150) dtype=float32>"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"top_layer_h_state"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"에포크 0 배치 데이터 정확도 = 0.97333336 검증 세트 정확도 = 0.9594\n",
"에포크 1 배치 데이터 정확도 = 0.94666666 검증 세트 정확도 = 0.9702\n",
"에포크 2 배치 데이터 정확도 = 0.9533333 검증 세트 정확도 = 0.9706\n",
"에포크 3 배치 데이터 정확도 = 0.9866667 검증 세트 정확도 = 0.9784\n",
"에포크 4 배치 데이터 정확도 = 0.97333336 검증 세트 정확도 = 0.9892\n",
"에포크 5 배치 데이터 정확도 = 0.9866667 검증 세트 정확도 = 0.987\n",
"에포크 6 배치 데이터 정확도 = 0.99333334 검증 세트 정확도 = 0.989\n",
"에포크 7 배치 데이터 정확도 = 1.0 검증 세트 정확도 = 0.9892\n",
"에포크 8 배치 데이터 정확도 = 1.0 검증 세트 정확도 = 0.9872\n",
"에포크 9 배치 데이터 정확도 = 1.0 검증 세트 정확도 = 0.9914\n",
"테스트 세트 정확도 = 0.988\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 X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size):\n",
" X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n",
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
" acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
" acc_valid = accuracy.eval(feed_dict={X: X_valid, y: y_valid})\n",
" print(\"에포크\", epoch, \"배치 데이터 정확도 =\", acc_batch, \"검증 세트 정확도 =\", acc_valid)\n",
" \n",
" acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
" print(\"테스트 세트 정확도 =\", acc_test)"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [],
"source": [
"lstm_cell = tf.contrib.rnn.LSTMCell(num_units=n_neurons, use_peepholes=True)"
]
},
{
"cell_type": "code",
"execution_count": 94,
"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": 95,
"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": 96,
"metadata": {},
"outputs": [],
"source": [
"words = fetch_words_data()"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['anarchism', 'originated', 'as', 'a', 'term']"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"words[:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 사전 구축"
]
},
{
"cell_type": "code",
"execution_count": 98,
"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": 99,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('anarchism originated as a term of abuse first used',\n",
" array([5234, 3081, 12, 6, 195, 2, 3134, 46, 59]))"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\" \".join(words[:9]), data[:9]"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'cycles originated as a term of abuse first used'"
]
},
"execution_count": 100,
"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": 101,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('culottes', 0)"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"words[24], data[24]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 배치 생성"
]
},
{
"cell_type": "code",
"execution_count": 102,
"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": 103,
"metadata": {},
"outputs": [],
"source": [
"data_index=0\n",
"batch, labels = generate_batch(8, 2, 1)"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([3081, 3081, 12, 12, 6, 6, 195, 195], dtype=int32),\n",
" ['originated', 'originated', 'as', 'as', 'a', 'a', 'term', 'term'])"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"batch, [vocabulary[word] for word in batch]"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([[5234],\n",
" [ 12],\n",
" [ 6],\n",
" [3081],\n",
" [ 12],\n",
" [ 195],\n",
" [ 2],\n",
" [ 6]], dtype=int32),\n",
" ['anarchism', 'as', 'a', 'originated', 'as', 'term', 'of', 'a'])"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"labels, [vocabulary[word] for word in labels[:, 0]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 모델 구성"
]
},
{
"cell_type": "code",
"execution_count": 106,
"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": 107,
"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": 108,
"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": 109,
"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": 110,
"metadata": {},
"outputs": [],
"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, keepdims=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": 111,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"반복: 0\t스텝 0 에서의 평균 손실: 294.8122863769531\n",
"would에 가장 가까운 단어: viewpoint, lured, rossini, vara, teflon, glaciation, losing, eurasia,\n",
"on에 가장 가까운 단어: thatched, falsely, wi, vinegar, euskal, consequentialist, baroness, tallinn,\n",
"four에 가장 가까운 단어: hom, rez, siege, translators, khalil, pegged, hellene, ynys,\n",
"his에 가장 가까운 단어: pointers, ponty, charged, achieved, rk, blooming, value, juggernaut,\n",
"often에 가장 가까운 단어: presses, convenience, arabidopsis, jewry, mapuche, guts, macrinus, implemented,\n",
"in에 가장 가까운 단어: furnishing, qi, renderer, mckenna, tuning, illustrate, advances, parser,\n",
"an에 가장 가까운 단어: gutierrez, dyess, privations, archaeological, bijection, kon, joh, insemination,\n",
"eight에 가장 가까운 단어: malacca, liquidation, davidic, comical, ochre, wild, redman, unconditional,\n",
"these에 가장 가까운 단어: pedro, condoned, neck, ssn, supervising, doug, thereto, melton,\n",
"nine에 가장 가까운 단어: cocker, struck, dame, tensile, unifies, operetta, develop, opinions,\n",
"called에 가장 가까운 단어: paradoxes, wings, krantz, consults, weblogs, supergirl, constitutionally, zoologists,\n",
"about에 가장 가까운 단어: heavyweight, cisco, fatou, triphosphate, predecessors, abkhazia, swordsmanship, wexford,\n",
"up에 가장 가까운 단어: clair, drives, steadfast, missed, nashville, vinland, kilowatts, anal,\n",
"one에 가장 가까운 단어: imagines, tijuana, hindrance, motorcyclist, steadfastly, lords, letting, hutchinson,\n",
"and에 가장 가까운 단어: pierre, savannah, fridays, laminated, reestablish, counters, unchecked, asymmetric,\n",
"been에 가장 가까운 단어: powerpc, maccabean, precarious, hounds, linear, hazael, gol, mammal,\n",
"반복: 2000\t스텝 2000 에서의 평균 손실: 131.21949096012116\n",
"반복: 4000\t스텝 4000 에서의 평균 손실: 62.38954436445236\n",
"반복: 6000\t스텝 6000 에서의 평균 손실: 42.05166929531097\n",
"반복: 8000\t스텝 8000 에서의 평균 손실: 30.956905481100083\n",
"반복: 10000\t스텝 10000 에서의 평균 손실: 26.223096049308776\n",
"would에 가장 가까운 단어: can, could, mileva, to, eeeeee, sod, ceded, colombo,\n",
"on에 가장 가까운 단어: in, pressed, arif, vanished, dipping, condoms, bellows, offer,\n",
"four에 가장 가까운 단어: five, one, nine, three, six, zero, two, seven,\n",
"his에 가장 가까운 단어: the, disco, galatea, han, mpla, rn, cairo, was,\n",
"often에 가장 가까운 단어: not, a, nonaggression, retroviral, was, schopenhauer, altaic, zf,\n",
"in에 가장 가까운 단어: of, and, the, by, illyrians, mpla, munda, actinium,\n",
"an에 가장 가까운 단어: parsley, conformations, unnoticed, altar, deuterostomes, for, foam, the,\n",
"eight에 가장 가까운 단어: nine, six, one, seven, five, zero, four, three,\n",
"these에 가장 가까운 단어: genes, appeasement, mpla, it, provisions, everywhere, actinium, informed,\n",
"nine에 가장 가까운 단어: one, eight, seven, three, zero, six, four, five,\n",
"called에 가장 가까운 단어: is, also, franks, summon, talking, feared, timothy, trickle,\n",
"about에 가장 가까운 단어: morpork, treasures, gide, option, jutland, coppola, nucleons, tutor,\n",
"up에 가장 가까운 단어: aquarius, alhazred, vastly, tt, priscilla, abolish, lubricants, newsweek,\n",
"one에 가장 가까운 단어: nine, seven, three, two, eight, five, six, four,\n",
"and에 가장 가까운 단어: of, the, in, as, a, by, UNK, durrani,\n",
"been에 가장 가까운 단어: have, has, fourier, by, conformation, was, had, be,\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": 112,
"metadata": {},
"outputs": [],
"source": [
"np.save(\"./my_final_embeddings.npy\", final_embeddings)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 임베딩 그래프"
]
},
{
"cell_type": "code",
"execution_count": 113,
"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": 114,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABBMAAAP3CAYAAAB+tAZHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XlY1OX+xvH3sAouuKAiLqGWmQuZB4+gIpv70cwd7afirpXWyTrhUZPSzMrKrdTKlMrSjrmEZVrgBGaahIiFuCXlAiIuqCjIMr8/iEkSMxQYhPt1XV0yz3eZz2Ojwv19FoPJZEJERERERERE5O+ysnQBIiIiIiIiInJ3UZggIiIiIiIiIkWiMEFEREREREREikRhgoiIiIiIiIgUicIEERERERERESkShQkiIiIiIiIiUiQKE0RERERERESkSBQmiIiIiIiIiEiRKEwQERERERERkSKxKe03dHZ2Nrm5uZX224qIiIiIiIjILfz444+pJpOp9q3OK/Uwwc3Njejo6NJ+WxERERERERG5BYPB8OvfOU/THERERERERESkSBQmiIiIiIiIiEiRKEwQERERERERkSJRmCAiIiIiIiIiRaIwQURERERERESKRGGCiIiIiIiIiBSJwgQRERERERERKRKFCSIiIiIiIiJSJAoTRERERERERKRIFCaIiIiIiIiISJEoTBARERERERGRIlGYICIiIiIiIiJFojBBRERERERERIpEYYKIiIiIiIiIFInCBBEREREREREpEoUJIiIiIiIiIlIkChNEREREREREpEgUJoiIiIiIiIhIkdxxmGAwGJ41GAxxBoNh9++//rc4ChMRERERERGRssnmTi42GAzewFOAu8lkOmswGGoCMQaDYY/JZPq6WCoUERERERERkTLlTkcmnPn91xq//1rt93uevsP7ioiIiIiIiEgZdUcjE0wmU4LBYBgP7DEYDGeAOsBok8kUd/15v58zHqBRo0Z38pYiIiIiIiIiYmF3NDLBYDA0A5YBXU0mUzPAA5hrMBg8rz/PZDK9YzKZPEwmk0ft2rXv5C1FRERERERExMLudJrDw8AOk8kUDWAymY4AG4Bhd1qYiIiIiIiIiJRNdxomHAI6GQyGegAGg6Ea0B04eKeFiYiIiIiIiEjZdKdrJnxuMBjuBb4yGAxXAUfg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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": 115,
"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": 116,
"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": 117,
"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": 118,
"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": 119,
"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": 120,
"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": 121,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"BPBPVPPEPE BPBEXSEPE BPBPTVVVPE BTBPXPSETE BTBPVVPTE BPBTSSXXTETVVEPE BPSTSXXTVPSEPE BPBTXSSPE BTBPTTTVPSVTE BPBTSXXTTTBTTVVEPE BPBVXXVPXTVPXTTVVEPE BPBPTTVBEPE BPBPVVEXE BPVPTTVVEPE BPBPVXSEPE BPBTTXXVVEPE BPBPTTTVPXVVETE BPBTSSXEEPE BPBPVBEPE BSBTXSEPE BTBPTVPXVPXVVETP XPBTSXXTVPXVPSEPE BPBTSXXTTTVTSEPE BPBPVPXVVSPE BTBTSTSETE "
]
}
],
"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": 122,
"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": 123,
"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": 123,
"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": 124,
"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": 125,
"metadata": {},
"outputs": [],
"source": [
"X_train, l_train, y_train = generate_dataset(10000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"첫 번째 훈련 샘플을 확인해 보겠습니다:"
]
},
{
"cell_type": "code",
"execution_count": 126,
"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, 1, 0, 0, 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": 126,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"데이터셋에서 가장 긴 문자열 때문에 패딩된 0 벡터가 많습니다. 문자열 길이가 얼마나 될까요?"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"23"
]
},
"execution_count": 127,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"l_train[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"타깃 클래스는?"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0])"
]
},
"execution_count": 128,
"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": 129,
"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": 130,
"metadata": {},
"outputs": [],
"source": [
"X_val, l_val, y_val = generate_dataset(5000)"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0 훈련 손실: 0.6937, 정확도: 52.00% 검증 세트 정확도: 59.28%\n",
" 1 훈련 손실: 0.6630, 정확도: 62.00% 검증 세트 정확도: 64.36%\n",
" 2 훈련 손실: 0.5794, 정확도: 72.00% 검증 세트 정확도: 68.44%\n",
" 3 훈련 손실: 0.6457, 정확도: 56.00% 검증 세트 정확도: 63.02%\n",
" 4 훈련 손실: 0.4674, 정확도: 78.00% 검증 세트 정확도: 78.90%\n",
" 5 훈련 손실: 0.5993, 정확도: 64.00% 검증 세트 정확도: 66.62%\n",
" 6 훈련 손실: 0.2541, 정확도: 96.00% 검증 세트 정확도: 89.34%\n",
" 7 훈련 손실: 0.1055, 정확도: 98.00% 검증 세트 정확도: 96.00%\n",
" 8 훈련 손실: 0.0753, 정확도: 100.00% 검증 세트 정확도: 95.04%\n",
" 9 훈련 손실: 0.0136, 정확도: 100.00% 검증 세트 정확도: 98.82%\n",
" 10 훈련 손실: 0.0310, 정확도: 100.00% 검증 세트 정확도: 98.52%\n",
" 11 훈련 손실: 0.0090, 정확도: 100.00% 검증 세트 정확도: 98.82%\n",
" 12 훈련 손실: 0.0174, 정확도: 100.00% 검증 세트 정확도: 99.74%\n",
" 13 훈련 손실: 0.0006, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 14 훈련 손실: 0.0004, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 15 훈련 손실: 0.0004, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 16 훈련 손실: 0.0003, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 17 훈련 손실: 0.0003, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 18 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 19 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 20 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 21 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 22 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 23 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 24 훈련 손실: 0.0002, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 25 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 26 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 27 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 28 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 29 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 30 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 31 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 32 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 33 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 34 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 35 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 36 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 37 훈련 손실: 0.0001, 정확도: 100.00% 검증 세트 정확도: 100.00%\n",
" 38 훈련 손실: 0.0001, 정확도: 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": 132,
"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.6.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
}