본문 바로가기

VISION

TensorFlow Basics

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