РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
280 of 824 menu

Метод train_on_batch

Метод train_on_batch применяется к модели Keras для выполнения одного шага обучения на одной партии данных. Первым параметром передается тензор входных данных x, вторым - тензор целевых значений y. Третьим параметром можно передать словарь sample_weight для взвешивания образцов. Четвертым - class_weight для взвешивания классов. Пятым - reset_metrics, который сбрасывает состояние метрик перед шагом. Шестым - return_dict, который возвращает результат в виде словаря. Метод возвращает скаляр потерь или список, содержащий потери и значения метрик, если метрики заданы. В отличие от метода fit, который обучает модель на протяжении нескольких эпох, train_on_batch выполняет ровно один шаг градиентного спуска. Перед вызовом метода модель должна быть скомпилирована через compile.

Синтаксис

model.train_on_batch(x, y, sample_weight=None, class_weight=None, reset_metrics=True, return_dict=False)

Пример

Давайте создадим простую модель, скомпилируем ее и выполним один шаг обучения на партии данных:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(1,)) ]) model.compile(optimizer='sgd', loss='mse') x = tf.constant([[1.0], [2.0], [3.0]]) y = tf.constant([[2.0], [4.0], [6.0]]) loss = model.train_on_batch(x, y) print(loss)

Результат выполнения кода:

3.5627367

Пример

Давайте добавим метрику mae и посмотрим, как метод возвращает список значений:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(1,)) ]) model.compile(optimizer='sgd', loss='mse', metrics=['mae']) x = tf.constant([[1.0], [2.0], [3.0]]) y = tf.constant([[2.0], [4.0], [6.0]]) res = model.train_on_batch(x, y) print(res)

Результат выполнения кода:

[3.5627367, 1.7842937]

Пример

Давайте используем параметр return_dict, чтобы получить результат в виде словаря:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(1,)) ]) model.compile(optimizer='sgd', loss='mse', metrics=['mae']) x = tf.constant([[1.0], [2.0], [3.0]]) y = tf.constant([[2.0], [4.0], [6.0]]) res = model.train_on_batch(x, y, return_dict=True) print(res)

Результат выполнения кода:

{'loss': 3.5627367, 'mae': 1.7842937}

Пример

Давайте передадим sample_weight, чтобы задать вес каждому образцу в партии:

<+python+> import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(1,)) ]) model.compile(optimizer='sgd', loss='mse') x = tf.constant([[1.0], [2.0], [3.0]]) y = tf.constant([[2.0], [4.0], [6.0]]) sw = tf.constant([1.0, 0.5, 2.0]) loss = model.train_on_batch(x, y, sample_weight=sw) print(loss) <-python+>

Результат выполнения кода:

2.9254994

Пример

Давайте выполним несколько шагов обучения в цикле, чтобы уменьшить значение потерь:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(1,)) ]) model.compile(optimizer='sgd', loss='mse') x = tf.constant([[1.0], [2.0], [3.0]]) y = tf.constant([[2.0], [4.0], [6.0]]) for i in range(5): loss = model.train_on_batch(x, y) print(loss)

Результат выполнения кода:

3.5627367 2.0349717 1.2912165 0.8698077 0.6132918

Смотрите также

  • метод fit,
    который обучает модель на протяжении нескольких эпох
  • метод test_on_batch,
    который оценивает модель на одной партии данных
  • метод predict_on_batch,
    который возвращает предсказания для одной партии данных
  • метод compile,
    который настраивает модель для обучения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить