In [1]:
import tensorflow as tf
print(tf.__version__)
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")
In [15]:
result, w_h1_out = sess.run([y,W_h1], feed_dict=tensor_map)
print(result)
print("-"*80)
print(w_h1_out)
In [ ]: