Пакетне навчання

Вступ до TensorFlow на Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

Що таке пакетне навчання?

На зображенні показано дані про ціну, площу та кількість спалень для будинків у окрузі Кінг.

На зображенні показано ті самі дані, поділені на пакети: ціна, площа та кількість спалень для будинків у окрузі Кінг.

Вступ до TensorFlow на Python

Параметр chunksize

  • pd.read_csv() дає змогу завантажувати дані пакетами
    • Не завантажуйте весь набір даних одразу
    • Параметр chunksize задає розмір пакета
# 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)
Вступ до TensorFlow на Python

Навчання лінійної моделі пакетами

# 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
Вступ до TensorFlow на Python

Навчання лінійної моделі пакетами

# 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()
Вступ до TensorFlow на Python

Навчання лінійної моделі пакетами

# 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())
Вступ до TensorFlow на Python

Повна вибірка проти пакетного навчання

  • Повна вибірка
    1. Одне оновлення за епоху
    2. Приймає набір даних без змін
    3. Обмеження за пам'яттю
  • Пакетне навчання
    1. Кілька оновлень за епоху
    2. Потрібно розбити набір даних
    3. Немає обмежень на розмір набору
Вступ до TensorFlow на Python

Давайте потренуємось!

Вступ до TensorFlow на Python

Preparing Video For Download...