본문 바로가기
IT/머신러닝

[section_12_lab] RNN – Basic Input Output

by 빨강자몽 2018. 6. 1.

Import 및 데이터 입력 부분

  • 이 후 3가지 예시의 import와 데이터 부분이다.
import tensorflow as tf
import random
import numpy as np
from tensorflow.contrib import rnn
import pprint
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

pp = pprint.PrettyPrinter(indent=4)
sess = tf.InteractiveSession()
h = [1, 0, 0, 0]
e = [0, 1, 0, 0]
l = [0, 0, 1, 0]
o = [0, 0, 0, 1]


Input (1,1,4) -> Output (1,1,2)

  • Input(1,1,4)-> 1(batch 갯수), 1(sequence length/1개의 단어), 4(dimension/encoding 크기)
  • Output(1,1,2)-> 1(batch 갯수), 1(sequence length/1개의 단어), 2(dimension/hidden 크기)
  • Cell 사용이유는 : Cell 생성 부분과 Cell 학습부분을 나눠서 Cell 교체시 전체 코드를 수정하지 않는 이점을 위해서이다.
  • Output의 값의 의미는 hidden layer에 초기화 된 값들이며 크게 신경쓰지 않아도 된다.
    (나중에 이 값들을 이용하여 최종 찾고자 하는 값을 찾는다.)
with tf.variable_scope('one_cell') as scope:
    # One cell RNN input_dim (4) -> output_dim (2)
    hidden_size = 2
    cell = tf.contrib.rnn.BasicRNNCell(num_units=hidden_size)
    print(cell.output_size, cell.state_size)

    x_data = np.array([[h]], dtype=np.float32) # x_data = [[[1,0,0,0]]]
    pp.pprint(x_data)
    outputs, _states = tf.nn.dynamic_rnn(cell, x_data, dtype=tf.float32)

    sess.run(tf.global_variables_initializer())
    pp.pprint(outputs.eval())



Input (1,5,4) -> Output (1,5,2)
  • Input(1,5,4)-> 1(batch 갯수/문장의 갯수), 5(sequence length/5개의 단어), 4(dimension/encoding 크기)
  • Output(1,5,2)-> 1(batch 갯수/문장의 갯수), 5(sequence length/5개의 단어), 2(dimension/hidden 크기)


Input (3,5,4) -> Output (3,5,2)

  • Input(3,5,4)-> 3(batch 갯수/문장의 갯수), 5(sequence length/5개의 단어), 4(dimension/encoding 크기)
  • Output(3,5,2)-> 3(batch 갯수/문장의 갯수), 5(sequence length/5개의 단어), 2(dimension/hidden 크기)