In [1]:
import tensorflow as tf
print(tf.__version__)


1.2.0

In [2]:
input_data = [[1,5,3,7,8,10,12],
              [5,8,10,3,9,7,1]]

label_data = [[0,0,0,1,0],
              [1,0,0,0,0]]

INPUT_SIZE = 7
HIDDEN1_SIZE = 10
HIDDEN2_SIZE = 8
CLASSES = 5

LEARNING_RATE = 0.01

In [3]:
"""
shape를 정해줄 때에서 법칙이 있는데 첫번째 디멘전이 있고, 두법째 디멘전이 있고, 세번째 디멘전이있고... 등등 쭉 나가는데
첫번째 디멘전은 무조건 배치가 들어간다 즉 입력되는 데이터가 몇개인가? 배치사이즈 
보통 배치에 개수는 알수 없는 경우가 일반적이다 즉 데이터가 몇개가 정확히 들어올지 모른다. 그래서 1차원 자리는 None로 보통 한다. 
"""

x = tf.placeholder(tf.float32, shape=[None, INPUT_SIZE], name='x') # 보통 직접 숫자를 써주는 것이 아니라 상수를 이용한다. 
y_ = tf.placeholder(tf.float32, shape=[None, CLASSES], name='y_')

In [4]:
tensor_map = {x: input_data, y_: label_data} #세션의 두번째 파라미터에 입력을 하는데 이것은 세션을 돌릴때 {x:,y_:}텐서는 위의 input_data와 label_data를 써라 라는 소리

In [5]:
#우리는 예전에 variable를 사용할때 tf.Variable([1,2,3]) 이렇게 값을 직접 지정 했지만 실제 사용할때에는 랜덤값으로 한다. 
#tf.truncated_normal(shape)를 넣는데 이때 리턴되는 결과가 Variable의 shape로 들어간다. 
W_h1 = tf.Variable(tf.truncated_normal([INPUT_SIZE, HIDDEN1_SIZE]), dtype=tf.float32,name='W_h1')

#bias라는 것도 중요하다 반드시 넣어줘서 high bias현상을 없애 줘야 한다.
b_h1 = tf.Variable(tf.zeros(shape=[HIDDEN1_SIZE]), dtype=tf.float32, name='b_h1')

W_h2 = tf.Variable(tf.truncated_normal([HIDDEN1_SIZE, HIDDEN2_SIZE]), dtype=tf.float32, name='W_h2')
b_h2 = tf.Variable(tf.zeros(shape=[HIDDEN2_SIZE]), dtype=tf.float32, name='b_h2')

W_o = tf.Variable(tf.truncated_normal([HIDDEN2_SIZE, CLASSES]), dtype=tf.float32, name='W_o')
b_o = tf.Variable(tf.zeros(shape=[CLASSES]), dtype=tf.float32, name='b_o')


#세이브를 할경우 Variable가 끝나는 시점에 생성을 해준다. 
#saver = tf.train.Saver()  #이렇게 해주면 위에 나오는 Variable는 다 저장 된다.

param_list = [W_h1, b_h1, W_h2, b_h2, W_o, b_o]
saver = tf.train.Saver(param_list)

In [6]:
hidden1 = tf.sigmoid(tf.matmul(x, W_h1) + b_h1, name='hidden1')
hidden2 = tf.sigmoid(tf.matmul(hidden1, W_h2) + b_h2 , name='hidden2')
y = tf.sigmoid(tf.matmul(hidden2, W_o) + b_o, name='y')

In [7]:
sess = tf.Session()

# sess.run(tf.global_variables_initializer()) #딱 이자리에서 restore를 해준다. 
saver.restore(sess, "./hans")


INFO:tensorflow:Restoring parameters from ./hans

In [15]:
result, w_h1_out = sess.run([y,W_h1], feed_dict=tensor_map)

print(result)
print("-"*80)
print(w_h1_out)


[[ 0.10207721  0.01148828  0.00551529  0.89387095  0.01537305]
 [ 0.90149009  0.01389805  0.01394992  0.09286129  0.00901838]]
--------------------------------------------------------------------------------
[[ 0.97754997  0.55621368 -0.44010696 -0.40851125  1.67365742  0.04584041
  -0.49842978  0.08423941 -0.66174001  0.39197806]
 [ 1.28061986  0.82232326  0.18743102  0.44222283  0.35149592 -0.02001804
  -1.68211639  0.82240736  0.30921844  0.02495141]
 [ 0.06555898  0.85553962  0.58220506 -0.55809259 -1.26070142 -1.11869264
  -0.15245967 -0.6072554   0.69489497  0.18019332]
 [ 0.70001388  0.9337604   1.86955929 -0.31405884 -1.80038369 -0.50542086
   0.42620143  1.05083084  1.08407152 -0.70436782]
 [ 0.59139049 -0.45903856  0.51112527 -0.17644282 -0.87902093  0.6172688
   0.56149948 -1.52415764 -1.7380538  -0.33054617]
 [ 0.29311156 -0.74966377  0.41208571  1.69806349  1.20500934 -1.59911454
   0.72933996 -0.78889257 -0.10907754 -0.76205885]
 [-0.01466538 -1.14897799  0.33773398 -0.49387085  1.08618689 -1.88665652
   0.29759467  0.2721279   1.58302677  0.48426652]]

In [ ]: