TensorFlow에서 네트워크 학습

Python으로 시작하는 TensorFlow

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

에그홀더 함수라 불리는 복잡한 목적함수의 3D 플롯입니다.

Python으로 시작하는 TensorFlow

무작위 초기화자

  • 수천 개 변수를 초기화해야 할 때가 많음
    • tf.ones()는 성능이 낮을 수 있음
    • 개별 초기화는 번거롭고 어렵습니다
  • 대안: 분포에서 초기값 샘플링
    • 정규분포
    • 균등분포
    • Glorot 초기화자
Python으로 시작하는 TensorFlow

TensorFlow에서 변수 초기화

import tensorflow as tf

# Define 500x500 random normal variable
weights = tf.Variable(tf.random.normal([500, 500]))

# Define 500x500 truncated random normal variable
weights = tf.Variable(tf.random.truncated_normal([500, 500]))
Python으로 시작하는 TensorFlow

TensorFlow에서 변수 초기화

# Define a dense layer with the default initializer
dense = tf.keras.layers.Dense(32, activation='relu')

# Define a dense layer with the zeros initializer
dense = tf.keras.layers.Dense(32, activation='relu',\
    kernel_initializer='zeros')
Python으로 시작하는 TensorFlow

신경망과 과적합

훈련 세트에서 단순·복잡 모델의 예측을 보여줍니다.

검증 세트에서 단순·복잡 모델의 예측을 보여줍니다.

Python으로 시작하는 TensorFlow

드롭아웃 적용

드롭아웃이 없는 신경망을 보여주는 이미지입니다.

무작위 노드에 드롭아웃을 적용한 신경망을 보여주는 이미지입니다.

Python으로 시작하는 TensorFlow

네트워크에 드롭아웃 구현

import numpy as np
import tensorflow as tf

# Define input data
inputs = np.array(borrower_features, np.float32)
# Define dense layer 1
dense1 = tf.keras.layers.Dense(32, activation='relu')(inputs)
Python으로 시작하는 TensorFlow

네트워크에 드롭아웃 구현

# Define dense layer 2
dense2 = tf.keras.layers.Dense(16, activation='relu')(dense1)
# Apply dropout operation
dropout1 = tf.keras.layers.Dropout(0.25)(dense2)
# Define output layer
outputs = tf.keras.layers.Dense(1, activation='sigmoid')(dropout1)
Python으로 시작하는 TensorFlow

연습해 봅시다!

Python으로 시작하는 TensorFlow

Preparing Video For Download...