Addestrare una rete in TensorFlow

Introduzione a TensorFlow in Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

L'immagine mostra un grafico 3D di una funzione obiettivo complessa chiamata eggholder.

Introduzione a TensorFlow in Python

Inizializzatori casuali

  • Spesso servono migliaia di variabili da inizializzare
    • tf.ones() può dare scarse prestazioni
    • Inizializzarle singolarmente è noioso e difficile
  • In alternativa, estrai i valori iniziali da una distribuzione
    • Normale
    • Uniforme
    • Inizializzatore di Glorot
Introduzione a TensorFlow in Python

Inizializzare variabili in TensorFlow

import tensorflow as tf

# Definisci una variabile 500x500 con normale casuale
weights = tf.Variable(tf.random.normal([500, 500]))

# Definisci una variabile 500x500 con normale troncata casuale
weights = tf.Variable(tf.random.truncated_normal([500, 500]))
Introduzione a TensorFlow in Python

Inizializzare variabili in TensorFlow

# Definisci un livello denso con l'inizializzatore predefinito
dense = tf.keras.layers.Dense(32, activation='relu')

# Definisci un livello denso con l'inizializzatore a zeri
dense = tf.keras.layers.Dense(32, activation='relu',\
    kernel_initializer='zeros')
Introduzione a TensorFlow in Python

Reti neurali e overfitting

L'immagine mostra le previsioni di modelli semplici e complessi nel set di training.

L'immagine mostra le previsioni di modelli semplici e complessi nel set di validazione.

Introduzione a TensorFlow in Python

Applicare il dropout

Questa immagine mostra una rete neurale senza dropout.

Questa immagine mostra una rete neurale con dropout applicato a nodi casuali.

Introduzione a TensorFlow in Python

Implementare il dropout in una rete

import numpy as np
import tensorflow as tf

# Definisci i dati di input
inputs = np.array(borrower_features, np.float32)
# Definisci il livello denso 1
dense1 = tf.keras.layers.Dense(32, activation='relu')(inputs)
Introduzione a TensorFlow in Python

Implementare il dropout in una rete

# Definisci il livello denso 2
dense2 = tf.keras.layers.Dense(16, activation='relu')(dense1)
# Applica l'operazione di dropout
dropout1 = tf.keras.layers.Dropout(0.25)(dense2)
# Definisci il livello di output
outputs = tf.keras.layers.Dense(1, activation='sigmoid')(dropout1)
Introduzione a TensorFlow in Python

Esercitiamoci!

Introduzione a TensorFlow in Python

Preparing Video For Download...