Antrenament pe loturi

Introducere în TensorFlow în Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

Ce este antrenamentul pe loturi?

Această imagine prezintă date despre preț, dimensiune și numărul de dormitoare pentru locuințe din comitatul King.

Această imagine prezintă date despre preț, dimensiune și numărul de dormitoare pentru locuințe din comitatul King, împărțite în loturi.

Introducere în TensorFlow în Python

Parametrul chunksize

  • pd.read_csv() permite încărcarea datelor pe loturi
    • Evitați încărcarea întregului set de date
    • Parametrul chunksize definește dimensiunea lotului
# Import pandas and numpy
import pandas as pd
import numpy as np

# Load data in batches
for batch in pd.read_csv('kc_housing.csv', chunksize=100):
    # Extract price column
    price = np.array(batch['price'], np.float32)

    # Extract size column
    size = np.array(batch['size'], np.float32)
Introducere în TensorFlow în Python

Antrenarea unui model liniar pe loturi

# Import tensorflow, pandas, and numpy
import tensorflow as tf
import pandas as pd
import numpy as np
# Define trainable variables
intercept = tf.Variable(0.1, tf.float32)
slope = tf.Variable(0.1, tf.float32)
# Define the model
def linear_regression(intercept, slope, features):
    return intercept + features*slope
Introducere în TensorFlow în Python

Antrenarea unui model liniar pe loturi

# Compute predicted values and return loss function
def loss_function(intercept, slope, targets, features):
    predictions = linear_regression(intercept, slope, features)
    return tf.keras.losses.mse(targets, predictions)
# Define optimization operation
opt = tf.keras.optimizers.Adam()
Introducere în TensorFlow în Python

Antrenarea unui model liniar pe loturi

# Load the data in batches from pandas
for batch in pd.read_csv('kc_housing.csv', chunksize=100):
    # Extract the target and feature columns
    price_batch = np.array(batch['price'], np.float32)
    size_batch = np.array(batch['lot_size'], np.float32)

    # Minimize the loss function
    opt.minimize(lambda: loss_function(intercept, slope, price_batch, size_batch), 
                 var_list=[intercept, slope])
# Print parameter values
print(intercept.numpy(), slope.numpy())
Introducere în TensorFlow în Python

Eșantion complet vs. antrenament pe loturi

  • Eșantion complet
    1. O actualizare per epocă
    2. Acceptă setul de date fără modificări
    3. Limitat de memorie
  • Antrenament pe loturi
    1. Mai multe actualizări per epocă
    2. Necesită împărțirea setului de date
    3. Fără limită de dimensiune a setului de date
Introducere în TensorFlow în Python

Să exersăm!

Introducere în TensorFlow în Python

Preparing Video For Download...