DL
-
[tensorflow 2.0] optimizer learning rate schedule데이터분석 2019. 12. 9. 23:15
섬세한 모형 튜닝을 위해서는 learning rate를 조금씩 줄여주는 작업이 필요하다. 특정 iteration마다 optimizer instance를 새로 생성해줘도 되지만, tensorflow에서는 optimizer의 learning rate scheduling이 가능하다. 가장 많이 쓰이는 ExponentialDecay는 계속 같은 비율로 learning rate를 감소시켜준다. 사용 예시는 아래와 같다. initial_learning_rate = 0.1 lr_schedule = keras.optimizers.schedules.ExponentialDecay( initial_learning_rate, decay_steps=100000, decay_rate=0.96, staircase=True) opt..
-
[tensorflow 2.0] tf.pad데이터분석 2019. 12. 2. 01:12
이미지 전처리 중 shape 통일을 위해서 원본 이미지에 zero-padding을 해야할 경우가 있다. 그 때 손쉽게 패팅하는 방법이 tf.pad이다. tf.pad( tensor, paddings, mode='CONSTANT', constant_values=0, name=None ) 사용 방법은 padding만 신경쓰면 어렵지 않다. padding은 shape이 D x 2인 텐서이며, [D, 0]은 D차원(rank) 앞의 패딩 [D, 1]은 D차원 뒤의 패딩을 의미한다. 예를 들어, input tensor의 Shape이 (Batch_size, height, width, channel) 라면, 다음과 같이 height와 width에만 padding을 추가할 수 있다. padding = [[0, 0], [6..
-
A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learningpaper review 2019. 11. 18. 19:16
논문을 review하기 전에 Knowledge Distillation의 시초가 되는 논문을 먼저 간단히 소개하고자 합니다. Knowledge Distillation 개념은 Teacher Network의 성능을 작은 Student Network에 담기위해 고안됐습니다. 처음 논문은 Teacher Network의 softmax 결과를 "soft label"로 정의하고, Student Network가 원래의 hard label과 soft label을 모두 학습하는 방식을 제안했습니다. 이번에 review하는 논문은 처음 논문과 최신 논문의 중간 단계입니다. 본 논문에서는 좀 더 효과적인 Knowledge Distillation 방법론을 제안합니다. 본 방법의 장점은 아래와 같다고 합니다. Optimized를 ..
-
[Tensorflow 2.0] custom gradient 함수로 reverse gradient 구현하기데이터분석 2019. 11. 7. 20:15
Adversarial Network를 학습하기 위해서는 gradient를 반전해야 할 때가 있다. 그런 경우 Tensorflow 2.x에서는 custom gradient 함수를 정의하여 구현할 수 있다. 일단 공식 가이드의 custom gradient 예시를 보자. # custom gradient sample @tf.custom_gradient def log1pexp(x): e = tf.exp(x) def grad(dy): return dy * (1 - 1 / (1 + e)) return tf.math.log(1 + e), grad 먼저 @tf.custom_gradient 데코레이터를 사용한다. 그리고 정의하는 함수 내부에서 input 처리 및 gradient를 return하는 함수를 정의해서 다시 반환..