Обучение сети в TensorFlow

Введение в TensorFlow на Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

На изображении показан 3D-график сложной целевой функции — функции яичного лотка.

Введение в TensorFlow на Python

Случайные инициализаторы

  • Часто требуется инициализировать тысячи переменных
    • tf.ones() может давать плохие результаты
    • Инициализировать переменные по отдельности — долго и неудобно
  • Альтернатива — задать начальные значения из распределения
    • Нормальное
    • Равномерное
    • Инициализатор Глорота
Введение в TensorFlow на Python

Инициализация переменных в 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]))
Введение в TensorFlow на Python

Инициализация переменных в 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')
Введение в TensorFlow на Python

Нейронные сети и переобучение

На изображении показаны предсказания простой и сложной моделей на обучающей выборке.

На изображении показаны предсказания простой и сложной моделей на валидационной выборке.

Введение в TensorFlow на Python

Применение dropout

На изображении показана нейронная сеть без dropout.

На изображении показана нейронная сеть с применением dropout к случайным узлам.

Введение в TensorFlow на Python

Реализация dropout в сети

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)
Введение в TensorFlow на Python

Реализация dropout в сети

# 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)
Введение в TensorFlow на Python

Давайте потренируемся!

Введение в TensorFlow на Python

Preparing Video For Download...