Пакетное обучение

Введение в 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...