在 TensorFlow 中訓練網路

Python 的 TensorFlow 入門

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

此圖為名為 eggholder 的複雜目標函式之 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 入門

套用 dropout

此圖為未使用 dropout 的神經網路。

此圖為對隨機節點套用 dropout 的神經網路。

Python 的 TensorFlow 入門

在網路中實作 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)
Python 的 TensorFlow 入門

在網路中實作 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)
Python 的 TensorFlow 入門

一起來練習吧!

Python 的 TensorFlow 入門

Preparing Video For Download...