TensorFlow Execution Step
Step 1. Tensor 생성 및 정의 (Computation graph를 그리는 과정)
Step 2. 세션 생성 및 실행 (Computation graph를 실행하는 과정)
import tensorflow as tf
a = tf.constant(2) #a에 상수 텐서 할당
b = tf.constant(3)
c = tf.constant(np.random.randn(3,1)) #텐서 dimension 설정 가능
d = tf.multiply(a,b) #a,b,c는 모두 텐서이다. 아직 연산이 이루어지지 않아 출력하면 결과가 바로 출력되지 않음.
session = tf.Session() #값이 할당 및 연산되게 하려면 session을 생성하고 실행해야 함.
print(session.run(c)) #6. c를 연산하여 출력
print(session.run(a+b)) #run 함수 내에서 연산도 가능하다.
session.close() #세션 종료.
* with tf.Session() as session: #with 블록 사용 시 close를 알아서 처리해줌
Variable 함수로 변수형 텐서를 선언해주는 경우, 세션 실행 시 변수 initializer를 별도로 실행해주어야 한다.
e = tf.Variable(a*b, name="e")
session.run(tf.global_variables_initializer()) #변수 initializer 실행
print(session.run(e)) #6. 연산 결과는 곱셈으로 c와 같음.
placeholder를 사용하면 처음부터 값을 할당하지 않고, 세션 실행 시 input값을 받아 feed_dict로 값을 전달할 수 있다.
x = tf.placeholder(tf.int64)
print(session.run(x, feed_dict={x:i}))
One-hot Encoding
labels = np.array([1,2,3,0,2,1])
one_hot = tf.one_hot(labels, depth=4, axis=0)
converted = tf.Session().run(one_hot)
Initialization (0 or 1)
ones = tf.ones(3) #output: [1. 1. 1.]
zeros = tf.zeros((3,1)) #output: [[0.][0.][0.]]
Convolutional Neural Network
# Convolution : batch size인 m과 채널 수에는 stride를 1로 두어야 한다. 아래는 4로 둔 경우.
Z = tf.nn.conv2d(X, W1, strides = [1,4,4,1], padding = 'SAME')
# RELU activation
A = tf.nn.relu(Z)
# Max pooling : 필터 사이즈 8x8, stride 4
P = tf.nn.max_pool(A, ksize=[1,8,8,1], strides=[1,4,4,1],padding='SAME')
# Flatten
F = tf.contrib.layers.flatten(P)
# Fully-connected layer
Z = tf.contrib.layers.fully_connected(F, 6, activation_fn=None)
# Compute cost : activation 이전값을 넣어야함
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = Z, labels = Y))
fully_connected 함수에서는 activation_fn을 통해 활성화함수 지정 가능. dafault는 relu이며 가장 큰 값만 남기고 나머지는 0으로 출력한다. None으로 할 경우 모든 값이 출력된다.
'VISION' 카테고리의 다른 글
Coursera 딥러닝 과정 수강 - 배운 내용 정리 (0) | 2020.08.20 |
---|---|
PyTorch Basics (0) | 2020.08.02 |
ResNet with Keras (0) | 2020.08.01 |
Keras Basics (0) | 2020.07.27 |
Gradient Descent Optimization - Mini batch, Momentum, RMS, Adam, Learning rate decay (0) | 2020.06.29 |