Spec-Zone.ru › TensorFlow 2.4

tf.keras.Model

Просмотреть исходный код на GitHub

Model группирует слои в объект с функциями обучения и вывода.

Наследует от: Layer, Module

Просмотр псевдонимов

Основные псевдонимы

tf.keras.models.Model

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.keras.Model, tf.compat.v1.keras.models.Model

tf.keras.Model(
    *args, **kwargs
)
Аргументы
inputs Входные данные модели: объект keras.Input или список объектов keras.Input.
outputs Выходные данные модели. См. пример функционального API ниже.
name Строка, имя модели.

Существует два способа создания экземпляра Model:

1 - С использованием "функционального API", где вы начинаете с Input, цепочкой вызовов слоев определяете прямой проход модели, и, наконец, создаёте модель из входных и выходных данных:

import tensorflow as tf

inputs = tf.keras.Input(shape=(3,))
x = tf.keras.layers.Dense(4, activation=tf.nn.relu)(inputs)
outputs = tf.keras.layers.Dense(5, activation=tf.nn.softmax)(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)

2 - Наследуя класс Model: в этом случае вы должны определить свои слои в __init__, и реализовать прямой проход модели в call.

import tensorflow as tf

class MyModel(tf.keras.Model):

  def __init__(self):
    super(MyModel, self).__init__()
    self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
    self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)

  def call(self, inputs):
    x = self.dense1(inputs)
    return self.dense2(x)

model = MyModel()

Если вы наследуете Model, вы можете необязательно иметь аргумент training (булево) в call, который можно использовать для определения разного поведения при обучении и выводе:

import tensorflow as tf

class MyModel(tf.keras.Model):

  def __init__(self):
    super(MyModel, self).__init__()
    self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
    self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)
    self.dropout = tf.keras.layers.Dropout(0.5)

  def call(self, inputs, training=False):
    x = self.dense1(inputs)
    if training:
      x = self.dropout(x, training=training)
    return self.dense2(x)

model = MyModel()

После создания модели, вы можете настроить модель с потерями и метриками с помощью model.compile(), обучить модель с помощью model.fit(), или использовать модель для предсказаний с помощью model.predict().

Атрибуты
distribute_strategy tf.distribute.Strategy, в рамках которой была создана эта модель.
layers
metrics_names Возвращает метки отображения всех выходов модели.
Примечание: metrics_names доступны только после того, как модель keras.Model была обучена/оценена на реальных данных.
inputs = tf.keras.layers.Input(shape=(3,))
outputs = tf.keras.layers.Dense(2)(inputs)
model = tf.keras.models.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer="Adam", loss="mse", metrics=["mae"])
model.metrics_names
[]
x = np.random.random((2, 3))
y = np.random.randint(0, 2, (2, 2))
model.fit(x, y)
model.metrics_names
['loss', 'mae']
inputs = tf.keras.layers.Input(shape=(3,))
d = tf.keras.layers.Dense(2, name='out')
output_1 = d(inputs)
output_2 = d(inputs)
model = tf.keras.models.Model(
   inputs=inputs, outputs=[output_1, output_2])
model.compile(optimizer="Adam", loss="mse", metrics=["mae", "acc"])
model.fit(x, (y, y))
model.metrics_names
['loss', 'out_loss', 'out_1_loss', 'out_mae', 'out_acc', 'out_1_mae',
'out_1_acc']
run_eagerly Устанавливаемый атрибут, указывающий, должна ли модель работать в режиме Eager Execution.

Работа в режиме Eager Execution означает, что ваша модель будет выполняться пошагово, как код Python. Модель может работать медленнее, но вам будет легче отладить её, переходя к отдельным вызовам слоёв.

По умолчанию мы попытаемся скомпилировать вашу модель в статическую графу, чтобы обеспечить наилучшую производительность выполнения.

Методы

compile

Просмотреть исходный код

compile(
    optimizer='rmsprop', loss=None, metrics=None, loss_weights=None,
    weighted_metrics=None, run_eagerly=None, steps_per_execution=None, **kwargs
)

Настраивает модель для обучения.

Аргументы
optimizer Строка (имя оптимизатора) или экземпляр оптимизатора. См. tf.keras.optimizers.
loss Строка (имя функции потерь), функция потерь или экземпляр tf.keras.losses.Loss. См. tf.keras.losses. Функция потерь — это любой вызываемый объект со сигнатурой loss = fn(y_true, y_pred), где y_true = истинные значения с формой = [batch_size, d0, .. dN], за исключением функций потерь с разреженным вводом, таких как разреженный категориальный перекрестный энтропийный, где форма = [batch_size, d0, .. dN-1]. y_pred = предсказанные значения с формой = [batch_size, d0, .. dN]. Он возвращает взвешенное значение потерь float тензор. Если используется экземпляр пользовательской Loss и reduction установлен в NONE, возвращаемое значение имеет форму [batch_size, d0, .. dN-1], т.е. значения потерь на образец или на шаг во времени; в противном случае это скаляр. Если у модели несколько выходов, вы можете использовать разные функции потерь для каждого выхода, передавая словарь или список функций потерь. Значение потерь, которое будет минимизировать модель, будет затем суммой всех отдельных потерь.
metrics Список метрик, которые будут оцениваться моделью во время обучения и тестирования. Каждый из них может быть строкой (имя встроенной функции), функцией или экземпляром tf.keras.metrics.Metric. См. tf.keras.metrics. Обычно вы будете использовать metrics=['accuracy']. Функция — это любой вызываемый объект со сигнатурой result = fn(y_true, y_pred). Чтобы указать разные метрики для разных выходов модели с несколькими выходами, вы также можете передать словарь, например metrics={'output_a': 'accuracy', 'output_b': ['accuracy', 'mse']}. Вы также можете передать список (длина = длина(выходы)) списков метрик, таких как metrics=[['accuracy'], ['accuracy', 'mse']] или metrics=['accuracy', ['accuracy', 'mse']]. Когда вы передаёте строки 'accuracy' или 'acc', мы преобразуем это в одну из tf.keras.metrics.BinaryAccuracy, tf.keras.metrics.CategoricalAccuracy, tf.keras.metrics.SparseCategoricalAccuracy в зависимости от используемой функции потерь и формы выходов модели. Мы производим аналогичное преобразование для строк 'crossentropy' и 'ce' тоже.
loss_weights Необязательный список или словарь, определяющий скалярные коэффициенты (числа с плавающей точкой Python) для взвешивания вкладов потерь разных выходов модели. Значение потерь, которое будет минимизировать модель, будет затем взвешенной суммой всех отдельных потерь, взвешенных с помощью коэффициентов loss_weights. Если это список, ожидается, что он будет иметь взаимно-однозначное соответствие выходам модели. Если это словарь, ожидается, что он будет сопоставлять имена выходов (строки) со скалярными коэффициентами.
weighted_metrics Список метрик, которые будут оцениваться и взвешиваться с помощью sample_weight или class_weight во время обучения и тестирования.
run_eagerly Булево значение. По умолчанию False. Если True, логика этой Model не будет обернута в tf.function. Рекомендуется оставить это как None , если ваша Model не может быть выполнена внутри tf.function.
steps_per_execution Целое число. По умолчанию 1. Количество батчей, которые будут выполняться при каждом вызове tf.function. Выполнение нескольких батчей внутри одного вызова tf.function может значительно улучшить производительность на TPUs или на небольших моделях с большой накладными расходами Python. Максимально будет выполнена одна полная эпоха при каждом выполнении. Если передано число, большее, чем размер эпохи, выполнение будет усечено до размера эпохи. Обратите внимание, что если steps_per_execution установлено на N, методы Callback.on_batch_begin и Callback.on_batch_end будут вызываться только через каждые N батчей (т.е. до/после каждого вызова tf.function).
**kwargs Аргументы, поддерживаемые только для обратной совместимости.
Исключения
ValueError В случае неверных аргументов для optimizer, loss или metrics.

evaluate

Просмотреть исходный код

evaluate(
    x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None,
    callbacks=None, max_queue_size=10, workers=1, use_multiprocessing=False,
    return_dict=False
)

Возвращает значение потерь и значения метрик для модели в режиме тестирования.

Вычисление выполняется по батчам (см. аргумент batch_size).

Аргументы
x Данные для входных данных. Это может быть:
  • Массив Numpy (или подобный массив), или список массивов (если у модели несколько входных данных).
  • Тензор TensorFlow или список тензоров (если у модели несколько входных данных).
  • Словарь, сопоставляющий имена входных данных с соответствующими массивами/тензорами, если у модели имеются именованные входные данные.
  • Набор данных tf.data. Должен возвращать кортеж, содержащий либо (inputs, targets) или (inputs, targets, sample_weights).
  • Генератор или keras.utils.Sequence, возвращающий (inputs, targets) или (inputs, targets, sample_weights). Более подробное описание поведения распаковки для типов итераторов (Dataset, генератор, Sequence) приведено в разделе Unpacking behavior for iterator-like inputs документации Model.fit.
y Данные для целевых переменных. Как и входные данные x, они могут быть либо массивом(ами) Numpy, либо тензором(ами) TensorFlow. Они должны быть согласованы с x (вы не можете иметь входные данные Numpy и целевые значения-тензоры или наоборот). Если x представляет собой набор данных, генератор или экземпляр keras.utils.Sequence, y не следует указывать (поскольку целевые значения будут извлекаться из итератора/набора данных).
batch_size Целое число или None. Количество выборок в пакет для вычислений. Если не указано, batch_size будет по умолчанию 32. Не указывайте batch_size если ваши данные представлены в виде набора данных, генераторов или экземпляров keras.utils.Sequence (так как они генерируют пакеты).
verbose 0 или 1. Режим отображения. 0 = без вывода, 1 = полоса прогресса.
sample_weight Необязательный массив Numpy весов для тестовых выборок, используемых для взвешивания функции потерь. Вы можете передать плоский (1D) массив Numpy той же длины, что и входные данные (1:1 соответствие между весами и выборками), или, в случае временных данных, вы можете передать 2D массив с формой (samples, sequence_length), чтобы применить разные веса к каждому шагу времени каждой выборки. Этот аргумент не поддерживается, когда x представляет собой набор данных, вместо этого передайте весы выборок как третий элемент x.
steps Целое число или None. Общее количество шагов (пакетов выборок) до объявления окончания этапа оценки. Игнорируется по умолчанию (None). Если x представляет собой набор данных tf.data, и steps равно None, «evaluate» будет выполняться до исчерпания набора данных. Этот аргумент не поддерживается с входными данными в виде массивов.
callbacks Список экземпляров keras.callbacks.Callback. Список колбеков, которые необходимо применить во время оценки. См. колбеки.
max_queue_size Целое число. Используется только для входных данных-генератора или keras.utils.Sequence. Максимальный размер очереди генератора. Если не указано, max_queue_size будет по умолчанию 10.
workers Целое число. Используется только для входных данных-генератора или keras.utils.Sequence. Максимальное количество процессов для запуска при использовании многопоточности на основе процессов. Если не указано, workers будет по умолчанию 1. Если 0, генератор будет выполняться в основном потоке.
use_multiprocessing Булево значение. Используется только для входных данных-генератора или keras.utils.Sequence. Если True, использовать многопоточность на основе процессов. Если не указано, use_multiprocessing будет по умолчанию False. Обратите внимание, что из-за того, что эта реализация использует multiprocessing, вы не должны передавать несериализуемые аргументы в генератор, так как они не могут быть легко переданы дочерним процессам.
return_dict Если True, результаты потерь и метрик возвращаются в виде словаря, где каждый ключ - имя метрики. Если False, они возвращаются в виде списка.

См. обсуждение Unpacking behavior for iterator-like inputs для Model.fit.

Возвращаемые значения
Скалярная потеря на тесте (если у модели один выход и нет метрик) или список скаляров (если у модели несколько выходов и/или метрик). Атрибут model.metrics_names предоставит метки для отображения скалярных выходов.
Исключения
RuntimeError Если model.evaluate обернут в tf.function.
ValueError в случае неверных аргументов.

evaluate_generator

Просмотреть исходный код

evaluate_generator(
    generator, steps=None, callbacks=None, max_queue_size=10, workers=1,
    use_multiprocessing=False, verbose=0
)

Оценивает модель на основе генератора данных.

УСТАРЕВШИЙ:

Model.evaluate теперь поддерживает генераторы, поэтому использование этого метода больше не требуется.

fit

Просмотреть исходный код

fit(
    x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None,
    validation_split=0.0, validation_data=None, shuffle=True, class_weight=None,
    sample_weight=None, initial_epoch=0, steps_per_epoch=None,
    validation_steps=None, validation_batch_size=None, validation_freq=1,
    max_queue_size=10, workers=1, use_multiprocessing=False
)

Обучает модель за фиксированное число эпох (итераций по набору данных).

Аргументы
x Данные для входных данных. Это может быть:
  • Массив Numpy (или подобный массиву объект), или список массивов (если модель имеет несколько входных данных).
  • Тензор TensorFlow или список тензоров (если модель имеет несколько входных данных).
  • Словарь, сопоставляющий имена входных данных соответствующим массивам/тензорам, если у модели есть именованные входные данные.
  • Набор данных tf.data. Должен возвращать кортеж либо (inputs, targets) или (inputs, targets, sample_weights).
  • Генератор или keras.utils.Sequence, возвращающий (inputs, targets) или (inputs, targets, sample_weights). Более подробное описание поведения распаковки для типов итераторов (Dataset, генератор, Sequence) приведено ниже.
y Данные целевых значений. Как и входные данные x, это могут быть массивы Numpy или тензоры TensorFlow. Они должны быть согласованы с x (вы не можете иметь входные данные Numpy и целевые тензоры или наоборот). Если x представляет собой набор данных, генератор или экземпляр keras.utils.Sequence, y не нужно указывать (так как целевые значения будут получены из x).
batch_size Целое число или None. Количество выборок на обновление градиента. Если не указано, batch_size по умолчанию будет равно 32. Не указывайте batch_size если ваши данные представлены в виде наборов данных, генераторов или экземпляров keras.utils.Sequence (так как они генерируют пакеты).
epochs Целое число. Количество эпох для обучения модели. Эпоха — это итерация по всем данным x и y. Обратите внимание, что в сочетании с initial_epoch, epochs понимается как "конечная эпоха". Модель обучается не за указанное число итераций epochs, а лишь до достижения эпохи с индексом epochs.
verbose 0, 1 или 2. Режим отображения. 0 = без вывода, 1 = полоска прогресса, 2 = одна строка на эпоху. Обратите внимание, что полоска прогресса не очень полезна при регистрации в файле, поэтому verbose=2 рекомендуется, когда вы не работаете интерактивно (например, в производственной среде).
callbacks Список экземпляров keras.callbacks.Callback. Список обратных вызовов для применения во время обучения. См. tf.keras.callbacks. Обратите внимание, что обратные вызовы tf.keras.callbacks.ProgbarLogger и tf.keras.callbacks.History создаются автоматически и не нужно передавать их в model.fit. tf.keras.callbacks.ProgbarLogger создается или нет, в зависимости от аргумента verbose в model.fit.
validation_split Вещественное число от 0 до 1. Доля обучающих данных, которая будет использоваться в качестве проверочных данных. Модель отложит эту долю обучающих данных, не будет на ней обучаться и будет оценивать потерю и любые метрики модели на этих данных в конце каждой эпохи. Проверочные данные выбираются из последних выборок в x и y данных, перед перемешиванием. Этот аргумент не поддерживается, когда x представляет собой набор данных, генератор или экземпляр keras.utils.Sequence.
validation_data Данные, на которых необходимо оценить потерю и любые метрики модели в конце каждой эпохи. Модель на этих данных не обучается. Таким образом, обратите внимание на тот факт, что значение проверочной потери данных, предоставленных с помощью validation_split или validation_data , не зависит от регуляризующих слоёв, таких как шум и дропаут. validation_data переопределит validation_split. validation_data может быть:
  • кортеж (x_val, y_val) массивов Numpy или тензоров
  • кортеж (x_val, y_val, val_sample_weights) массивов Numpy
  • набор данных Для первых двух случаев, batch_size должен быть предоставлен. Для последнего случая, validation_steps может быть предоставлен. Обратите внимание, что validation_data не поддерживает все типы данных, которые поддерживаются в x, например, словарь, генератор или keras.utils.Sequence.
  • shuffle Булево значение (перемешивать ли обучающие данные перед каждой эпохой) или строка ('batch'). Этот аргумент игнорируется, когда x является генератором. 'batch' — специальный вариант для работы с ограничениями данных HDF5; он перемешивает данные в блоках размером с пакет. Не оказывает влияния, если steps_per_epoch не None.
    class_weight Необязательный словарь, сопоставляющий индексы классов (целые числа) с весовым значением (вещественное число), используемый для взвешивания функции потерь (только во время обучения). Это может быть полезно, чтобы сказать модели "обращать больше внимания" на выборки из недопредставленного класса.
    sample_weight Необязательный массив Numpy весов для обучающих выборок, используемый для взвешивания функции потерь (только во время обучения). Вы можете передать плоский (одномерный) массив Numpy с той же длиной, что и входные выборки (1:1 соответствие между весами и выборками), или, в случае временных данных, вы можете передать двумерный массив с формой (samples, sequence_length), чтобы применить разный вес к каждому шагу во времени каждой выборки. Этот аргумент не поддерживается, когда x является набором данных, генератором или keras.utils.Sequence экземпляром, вместо этого передайте sample_weights как третий элемент x.
    initial_epoch Целое число. Эпоха, с которой начать обучение (полезно для возобновления предыдущего цикла обучения).
    steps_per_epoch Целое число или None. Общее количество шагов (пакетов выборок) перед объявлением завершения эпохи и началом следующей эпохи. При обучении с входными тензорами, такими как тензоры данных TensorFlow, значение None по умолчанию равно количеству выборок в наборе данных, делённому на размер пакета, или 1, если это невозможно определить. Если x — набор данных tf.data, и 'steps_per_epoch' равно None, эпоха будет выполняться до исчерпания входных данных. При передаче бесконечно повторяющегося набора данных, необходимо указать аргумент steps_per_epoch. Этот аргумент не поддерживается с входными данными в виде массивов.
    validation_steps Актуально только если validation_data предоставлен и является набором данных tf.data. Общее количество шагов (пакетов выборок), которые нужно выполнить перед остановкой при выполнении проверки в конце каждой эпохи. Если 'validation_steps' равно None, проверка будет выполняться до исчерпания набора данных validation_data. В случае бесконечно повторяющегося набора данных, он будет выполняться бесконечно. Если 'validation_steps' указан и будет прочитан только фрагмент набора данных, оценка будет начинаться с начала набора данных в каждой эпохе. Это гарантирует, что используются одни и те же образцы для проверки каждый раз.
    validation_batch_size Целое число или None. Количество выборок в одном пакете проверки. Если не указано, по умолчанию будет batch_size. Не указывайте validation_batch_size если ваши данные представлены в виде наборов данных, генераторов или keras.utils.Sequence экземпляров (так как они генерируют пакеты).
    validation_freq Актуально только если предоставлены проверочные данные. Целое число или экземпляр collections_abc.Container (например, список, кортеж и т.д.). Если целое число, определяет количество эпох обучения, которые необходимо выполнить перед выполнением новой проверки, например, validation_freq=2 выполняет проверку через каждые 2 эпохи. Если контейнер, определяет эпохи, на которых следует выполнять проверку, например, validation_freq=[1, 2, 10] выполняет проверку в конце 1-й, 2-й и 10-й эпох.
    max_queue_size Целое число. Используется только для входных данных генератора или keras.utils.Sequence. Максимальный размер очереди генератора. Если не указано, max_queue_size будет по умолчанию равно 10.
    workers Целое число. Используется только для входных данных генератора или keras.utils.Sequence. Максимальное количество процессов для запуска при использовании многопоточности на основе процессов. Если не указано, workers будет по умолчанию равно 1. Если 0, генератор будет выполняться на основном потоке.
    use_multiprocessing Булево значение. Используется только для входных данных генератора или keras.utils.Sequence. Если True, использовать многопоточность на основе процессов. Если не указано, use_multiprocessing будет по умолчанию равно False. Обратите внимание, что поскольку эта реализация использует многопроцессорность, не следует передавать не сериализуемые аргументы генератору, так как их трудно передать дочерним процессам.

    Поведение распаковки для итераторов: Распространённый подход — передавать tf.data.Dataset, генератор или tf.keras.utils.Sequence в аргумент x метода fit. Он фактически возвращает не только признаки (x), но необязательно и целевые значения (y) и веса выборок. Keras требует, чтобы вывод таких итераторов был однозначным. Итератор должен возвращать кортеж длины 1, 2 или 3, где необязательные второй и третий элементы будут использоваться для y и sample_weight соответственно. Любой другой тип будет заключён в кортеж длиной один, эффективно обрабатывая всё как 'x'. При передаче словарей, они должны соответствовать структуре кортежа верхнего уровня. Например, ({"x0": x0, "x1": x1}, y). Keras не будет пытаться разделить признаки, целевые значения и веса из ключей одного словаря. Заметным неподдерживаемым типом данных является namedtuple. Причина в том, что он ведёт себя как упорядоченный тип данных (кортеж) и как тип данных отображения (словарь). Таким образом, приведён namedtuple вида: namedtuple("example_tuple", ["y", "x"]) неясно, следует ли менять порядок элементов при интерпретации значения. Ещё хуже кортеж вида: namedtuple("other_tuple", ["x", "y", "z"]), где неясно, предназначался ли кортеж для распаковки в x, y и sample_weight или для передачи в качестве одного элемента в x. В результате, код обработки данных просто поднимет ValueError, если встретит namedtuple. (Вместе с инструкциями по решению проблемы.)

    Возвращаемое значение
    Объект History. Его атрибут History.history содержит запись значений потерь обучения и значений метрик на последовательных эпохах, а также значений потерь проверки и значений метрик проверки (если применимо).
    Возвращает исключение
    RuntimeError
    1. Если модель никогда не компилировалась или,
    2. Если model.fit обернута в tf.function.
    ValueError В случае несоответствия между предоставленными входными данными и ожидаемыми моделью данными или при пустых входных данных.

    fit_generator

    Просмотреть исходный код

    fit_generator(
        generator, steps_per_epoch=None, epochs=1, verbose=1, callbacks=None,
        validation_data=None, validation_steps=None, validation_freq=1,
        class_weight=None, max_queue_size=10, workers=1, use_multiprocessing=False,
        shuffle=True, initial_epoch=0
    )
    

    Обучает модель на данных, предоставляемых по частям генератором Python.

    УСТАРЕЛО:

    Model.fit теперь поддерживает генераторы, поэтому больше нет необходимости использовать этот метод.

    get_layer

    Просмотреть исходный код

    get_layer(
        name=None, index=None
    )
    

    Получает слой по имени (уникальному) или индексу.

    Если name и index указаны оба, index будет иметь приоритет. Индексы основаны на порядке горизонтального обхода графа (снизу вверх).

    Аргументы
    name Строка, имя слоя.
    index Целое число, индекс слоя.
    Возвращаемое значение
    Экземпляр слоя.
    Возвращает исключение
    ValueError В случае неверного имени или индекса слоя.

    load_weights

    Просмотреть исходный код

    load_weights(
        filepath, by_name=False, skip_mismatch=False, options=None
    )
    

    Загружает все веса слоев из файла весов TensorFlow или HDF5.

    Если by_name равно False, веса загружаются на основе топологии сети. Это означает, что архитектура должна быть такой же, как при сохранении весов. Обратите внимание, что слои, у которых нет весов, не учитываются при топологическом порядке, поэтому добавление или удаление слоев допустимо, если у них нет весов.

    Если by_name равно True, веса загружаются в слои только в том случае, если они имеют одинаковое имя. Это полезно для тонкой настройки или трансферного обучения моделей, где некоторые слои изменились.

    Только топологическая загрузка (by_name=False) поддерживается при загрузке весов из формата TensorFlow. Обратите внимание, что топологическая загрузка немного отличается между форматами TensorFlow и HDF5 для пользовательских классов, наследуемых от tf.keras.Model: HDF5 загружает на основе сглаженного списка весов, а формат TensorFlow загружает на основе локальных имен атрибутов, которым слои назначены в конструкторе Model.

    Аргументы
    filepath Строка, путь к файлу весов для загрузки. Для файлов весов в формате TensorFlow это префикс файла (такой же, как был передан в save_weights).
    by_name Булево значение, определяет, загружать ли веса по имени или по топологическому порядку. Только топологическая загрузка поддерживается для файлов весов в формате TensorFlow.
    skip_mismatch Булево значение, пропускать ли загрузку слоев, где не совпадает количество весов или форма весов (действительно только при by_name=True).
    options Необязательный объект tf.train.CheckpointOptions, определяющий опции загрузки весов.
    Возвращаемое значение
    При загрузке файла весов в формате TensorFlow возвращается тот же объект состояния, что и в tf.train.Checkpoint.restore. При построении графа операции восстановления выполняются автоматически, как только сеть построена (при первом вызове для пользовательских классов, наследуемых от Model, немедленно, если она уже построена).

    При загрузке весов в формате HDF5 возвращается None.

    Возвращает исключение
    ImportError Если h5py недоступен, и файл весов находится в формате HDF5.
    ValueError Если skip_mismatch установлено в True, когда by_name равно False.

    make_predict_function

    Просмотреть исходный код

    make_predict_function()
    

    Создаёт функцию, которая выполняет один шаг инференции.

    Этот метод может быть переопределён для поддержки пользовательской логики инференции. Этот метод вызывается Model.predict и Model.predict_on_batch.

    Как правило, этот метод напрямую управляет tf.function и tf.distribute.Strategy настройками и делегирует фактическую логику оценки Model.predict_step.

    Функция кэшируется при первом вызове Model.predict или Model.predict_on_batch. Кэш очищается при вызове Model.compile.

    Возвращаемое значение
    Функция. Функция, созданная этим методом, должна принимать tf.data.Iterator и возвращать выходные значения Model.

    make_test_function

    Просмотреть исходный код

    make_test_function()
    

    Создаёт функцию, которая выполняет один шаг оценки.

    Этот метод может быть переопределён для поддержки пользовательской логики оценки. Этот метод вызывается Model.evaluate и Model.test_on_batch.

    Как правило, этот метод напрямую управляет tf.function и tf.distribute.Strategy настройками и делегирует фактическую логику оценки Model.test_step.

    Функция кэшируется при первом вызове Model.evaluate или Model.test_on_batch. Кэш очищается при вызове Model.compile.

    Возвращаемое значение
    Функция. Функция, созданная этим методом, должна принимать tf.data.Iterator и возвращать объект dict, содержащий значения, которые будут переданы в tf.keras.Callbacks.on_test_batch_end.

    make_train_function

    Просмотреть исходный код

    make_train_function()
    

    Создаёт функцию, которая выполняет один шаг обучения.

    Этот метод может быть переопределён для поддержки пользовательской логики обучения. Этот метод вызывается Model.fit и Model.train_on_batch.

    Как правило, этот метод напрямую управляет tf.function и tf.distribute.Strategy настройками и делегирует фактическую логику обучения Model.train_step.

    Функция кэшируется при первом вызове Model.fit или Model.train_on_batch. Кэш очищается при вызове Model.compile.

    Возвращаемое значение
    Функция. Функция, созданная этим методом, должна принимать tf.data.Iterator и возвращать объект dict, содержащий значения, которые будут переданы в tf.keras.Callbacks.on_train_batch_end, такие как {'loss': 0.2, 'accuracy': 0.7}.

    predict

    Просмотреть исходный код

    predict(
        x, batch_size=None, verbose=0, steps=None, callbacks=None, max_queue_size=10,
        workers=1, use_multiprocessing=False
    )
    

    Генерирует предсказания для входных выборок.

    Вычисления выполняются по частям. Этот метод разработан для производительности с большими входными данными. Для небольшого количества входных данных, которые помещаются в одну партию, рекомендуется использовать напрямую __call__, например, model(x), или model(x, training=False), если у вас есть слои, такие как tf.keras.layers.BatchNormalization, которые ведут себя по-разному во время инференции. Также обратите внимание на то, что тестовая потеря не зависит от регуляризующих слоёв, таких как шум и дропаут.

    Аргументы
    x Примеры входных данных. Это может быть:
    • Массив NumPy (или подобный массиву объект), или список массивов (в случае модели с несколькими входами).
    • Тензор TensorFlow или список тензоров (в случае модели с несколькими входами).
    • Набор данных tf.data.
    • Генератор или экземпляр keras.utils.Sequence. Более подробное описание поведения распаковки для типов итераторов (Dataset, генератор, Sequence) приведено в разделе Unpacking behavior for iterator-like inputs документа Model.fit.
    batch_size Целое число или None. Количество примеров в батче. Если не указано, значение по умолчанию batch_size равно 32. Не указывайте batch_size если ваши данные представлены в виде набора данных, генераторов или экземпляров keras.utils.Sequence (поскольку они генерируют батчи).
    verbose Режим отображения, 0 или 1.
    steps Общее количество шагов (батчей примеров) перед объявлением завершения раунда прогнозирования. Игнорируется по умолчанию, со значением None. Если x представляет собой набор данных tf.data и steps равно None, predict будет выполняться до тех пор, пока набор данных на входе не будет исчерпан.
    callbacks Список экземпляров keras.callbacks.Callback. Список обратных вызовов для применения во время прогнозирования. См. callbacks.
    max_queue_size Целое число. Используется только для генераторов или входных данных типа keras.utils.Sequence. Максимальный размер очереди генератора. Если не указано, max_queue_size по умолчанию равно 10.
    workers Целое число. Используется только для генераторов или входных данных типа keras.utils.Sequence. Максимальное количество процессов для запуска при использовании многопоточности на основе процессов. Если не указано, значение по умолчанию workers равно 1. Если 0, генератор будет выполняться в основном потоке.
    use_multiprocessing Булево значение. Используется только для генераторов или входных данных типа keras.utils.Sequence. Если True, используйте многопоточность на основе процессов. Если не указано, use_multiprocessing по умолчанию равно False. Обратите внимание, что поскольку эта реализация использует многопроцессорность, не следует передавать в генератор не сохраняемые аргументы, так как их трудно передавать дочерним процессам.

    См. обсуждение Unpacking behavior for iterator-like inputs для Model.fit. Обратите внимание, что Model.predict использует те же правила интерпретации, что и Model.fit и Model.evaluate, поэтому входы должны быть однозначными для всех трех методов.

    Возвращаемое значение
    Массив(ы) NumPy прогнозов.
    Исключения
    RuntimeError Если model.predict заключено в tf.function.
    ValueError В случае несоответствия между предоставленными входными данными и ожиданиями модели или если состоятельная модель получает количество примеров, которое не является кратным размеру батча.

    predict_generator

    Просмотреть исходный код

    predict_generator(
        generator, steps=None, callbacks=None, max_queue_size=10, workers=1,
        use_multiprocessing=False, verbose=0
    )
    

    Генерирует прогнозы для входных данных из генератора.

    УСТАРЕЛО:

    Model.predict теперь поддерживает генераторы, поэтому больше нет необходимости использовать этот метод.

    predict_on_batch

    Просмотреть исходный код

    predict_on_batch(
        x
    )
    

    Возвращает прогнозы для одного батча примеров.

    Аргументы
    x Входные данные. Это может быть: - Массив NumPy (или подобный массиву объект), или список массивов (в случае модели с несколькими входами). - Тензор TensorFlow или список тензоров (в случае модели с несколькими входами).
    Возвращаемое значение
    Массив(ы) NumPy прогнозов.
    Исключения
    RuntimeError Если model.predict_on_batch заключено в tf.function.
    ValueError В случае несоответствия между количеством входных данных и ожиданиями модели.

    predict_step

    Просмотреть исходный код

    predict_step(
        data
    )
    

    Логика для одного шага прогнозирования.

    Этот метод может быть переопределён для поддержки пользовательской логики прогнозирования. Этот метод вызывается методом Model.make_predict_function.

    Этот метод должен содержать математическую логику для одного шага прогнозирования. Как правило, это включает прямой проход.

    Подробности конфигурации как выполняется эта логика (например, tf.function и tf.distribute.Strategy настройки) должны быть оставлены методу Model.make_predict_function, который также может быть переопределён.

    Аргументы
    data Вложенная структура Tensors.
    Возвращаемое значение
    Результат одного шага прогнозирования, обычно вывод вызова Model на данных.

    reset_metrics

    Просмотреть исходный код

    reset_metrics()
    

    Сбрасывает состояние всех метрик в модели.

    Примеры:

    inputs = tf.keras.layers.Input(shape=(3,))
    outputs = tf.keras.layers.Dense(2)(inputs)
    model = tf.keras.models.Model(inputs=inputs, outputs=outputs)
    model.compile(optimizer="Adam", loss="mse", metrics=["mae"])
    
    x = np.random.random((2, 3))
    y = np.random.randint(0, 2, (2, 2))
    _ = model.fit(x, y, verbose=0)
    assert all(float(m.result()) for m in model.metrics)
    
    model.reset_metrics()
    assert all(float(m.result()) == 0 for m in model.metrics)
    

    reset_states

    Просмотреть исходный код

    reset_states()
    

    save

    Просмотреть исходный код

    save(
        filepath, overwrite=True, include_optimizer=True, save_format=None,
        signatures=None, options=None, save_traces=True
    )
    

    Сохраняет модель в формате Tensorflow SavedModel или в файл HDF5.

    Подробности см. в разделе tf.keras.models.save_model или руководстве по сериализации и сохранению Serialization and Saving guide.

    Аргументы
    filepath Строка, PathLike, путь к файлу SavedModel или H5 для сохранения модели.
    overwrite Нужно ли тихо перезаписывать любой существующий файл в целевом расположении или предоставить пользователю возможность ручного подтверждения.
    include_optimizer Если True, сохраняет состояние оптимизатора вместе.
    save_format Либо 'tf' или 'h5', указывающие, сохранять ли модель в формате Tensorflow SavedModel или HDF5. По умолчанию 'tf' в TF 2.X и 'h5' в TF 1.X.
    signatures Сигнатуры для сохранения вместе с SavedModel. Применимо только к формату 'tf'. Подробности см. в аргументе signatures в tf.saved_model.save.
    options (только для формата SavedModel) объект tf.saved_model.SaveOptions, который задаёт параметры сохранения в SavedModel.
    save_traces (только для формата SavedModel) При включении SavedModel сохранит трассы функций для каждого слоя. Это можно отключить, чтобы сохранились только конфигурации каждого слоя. По умолчанию True. Отключение уменьшит время сериализации и размер файла, но потребует, чтобы все пользовательские слои/модели реализовали метод get_config() .

    Пример:

    from keras.models import load_model
    
    model.save('my_model.h5')  # creates a HDF5 file 'my_model.h5'
    del model  # deletes the existing model
    
    # returns a compiled model
    # identical to the previous one
    model = load_model('my_model.h5')
    

    save_weights

    Просмотреть исходный код

    save_weights(
        filepath, overwrite=True, save_format=None, options=None
    )
    

    Сохраняет все веса слоёв.

    Сохранение происходит в формате HDF5 или TensorFlow, в зависимости от аргумента save_format.

    При сохранении в формате HDF5 файл весов содержит:

    • layer_names (атрибут), список строк (упорядоченные имена слоёв модели).
    • Для каждого слоя, атрибут group с именем layer.name
      • Для каждой такой группы слоёв, атрибут группы weight_names, список строк (упорядоченные имена тензоров весов слоя).
      • Для каждого веса в слое, набор данных, хранящий значение веса, с именем, соответствующим тензору веса.

    При сохранении в формате TensorFlow все объекты, на которые ссылается сеть, сохраняются в том же формате, что и tf.train.Checkpoint, включая любые Layer экземпляры или Optimizer экземпляры, назначенные атрибутам объектов. Для сетей, построенных из входных и выходных данных с использованием tf.keras.Model(inputs, outputs), Layer экземпляры, используемые сетью, отслеживаются/сохраняются автоматически. Для пользовательских классов, унаследованных от tf.keras.Model, Layer экземпляры должны быть назначены атрибутам объектов, обычно в конструкторе. Подробности см. в документации tf.train.Checkpoint и tf.keras.Model.

    Хотя форматы одинаковы, не смешивайте save_weights и tf.train.Checkpoint. Точки останова, сохранённые с помощью Model.save_weights, должны загружаться с помощью Model.load_weights. Точки останова, сохраненные с использованием tf.train.Checkpoint.save, должны восстанавливаться с помощью соответствующей tf.train.Checkpoint.restore. Для точек останова обучения предпочтительнее использовать tf.train.Checkpoint вместо save_weights.

    Формат TensorFlow сопоставляет объекты и переменные, начиная с корневого объекта, self для save_weights, и жадно сопоставляет имена атрибутов. Для Model.save это Model, а для Checkpoint.save это Checkpoint даже если у Checkpoint есть присоединённая модель. Это означает, что сохранение tf.keras.Model с помощью save_weights и загрузка в tf.train.Checkpoint с присоединённой Model (или наоборот) не приведут к совпадению переменных Model. Подробные сведения о формате TensorFlow см. в руководстве по точкам останова обучения.

    Arguments
    filepath Строка или PathLike, путь к файлу, в который нужно сохранить веса. При сохранении в формате TensorFlow это префикс, используемый для файлов контрольных точек (генерируется несколько файлов). Обратите внимание, что суффикс '.h5' приводит к сохранению весов в формате HDF5.
    overwrite Нужно ли безвозвратно перезаписывать любой существующий файл в целевом расположении или предоставить пользователю возможность подтвердить операцию вручную.
    save_format Либо 'tf', либо 'h5'. Файл с filepath окончанием '.h5' или '.keras' по умолчанию будет сохранен в формате HDF5, если save_format равно None. В противном случае None по умолчанию равно 'tf'.
    options Необязательный объект tf.train.CheckpointOptions, задающий параметры сохранения весов.
    Raises
    ImportError Если h5py недоступен при попытке сохранения в формате HDF5.
    ValueError В случае неверных/неизвестных аргументов формата.

    summary

    Просмотреть исходный код

    summary(
        line_length=None, positions=None, print_fn=None
    )
    

    Выводит текстовое резюме сети.

    Arguments
    line_length Общая длина выводимых строк (например, устанавливайте это значение для адаптации отображения к различным размерам окон терминала).
    positions Относительные или абсолютные позиции элементов лога в каждой строке. Если не указано, по умолчанию [.33, .55, .67, 1.].
    print_fn Функция вывода для использования. По умолчанию print. Она будет вызываться для каждой строки сводки. Вы можете установить ее на пользовательскую функцию, чтобы сохранить текстовое резюме.
    Raises
    ValueError если summary() вызывается до построения модели.

    test_on_batch

    Просмотреть исходный код

    test_on_batch(
        x, y=None, sample_weight=None, reset_metrics=True, return_dict=False
    )
    

    Тестирование модели на одной пачке данных.

    Arguments
    x Входные данные. Может быть: - Массив Numpy (или подобный массиву объект), или список массивов (если у модели несколько входных данных). - TensorFlow тензор или список тензоров (если у модели несколько входных данных).
    • Словарь, сопоставляющий имена входных данных соответствующим массивам/тензорам, если у модели есть именованные входы.
    y Данные целевого результата. Как и входные данные x, это могут быть массивы Numpy или TensorFlow тензоры. Они должны быть согласованы с x (вы не можете иметь входные данные Numpy и целевые данные тензоры, или наоборот).
    sample_weight Необязательный массив той же длины, что и x, содержащий веса, применяемые к функции потерь модели для каждого образца. В случае временных данных вы можете передать двумерный массив с формой (образцы, длина_последовательности), чтобы применить разные веса к каждому временнному шагу каждого образца.
    reset_metrics Если True, значения метрик, возвращаемые, будут только для этой пачки. Если False, метрики будут накапливаться по всей партии данных.
    return_dict Если True, результаты потерь и метрик возвращаются как словарь, где каждый ключ - имя метрики. Если False, они возвращаются как список.
    Returns
    Скалярная ошибка тестирования (если у модели один выход и нет метрик) или список скаляров (если у модели несколько выходов и/или метрик). Атрибут model.metrics_names предоставляет метки отображения для скалярных выходов.
    Raises
    RuntimeError Если model.test_on_batch обернут в tf.function.
    ValueError В случае неверных пользовательских аргументов.

    test_step

    Просмотреть исходный код

    test_step(
        data
    )
    

    Логика одного шага оценки.

    Этот метод может быть переопределен для поддержки пользовательской логики оценки. Этот метод вызывается методом Model.make_test_function.

    Эта функция должна содержать математическую логику для одного шага оценки. Как правило, она включает прямой проход, вычисление потерь и обновление метрик.

    Детали конфигурации того, *как* выполняется эта логика (например, настройки tf.function и tf.distribute.Strategy), должны быть оставлены Model.make_test_function, который также может быть переопределен.

    Arguments
    data Вложенная структура Tensor.
    Returns
    Объект dict, содержащий значения, которые будут переданы в tf.keras.callbacks.CallbackList.on_train_batch_end. Как правило, возвращаются значения метрик Model

    to_json

    Просмотреть исходный код

    to_json(
        **kwargs
    )
    

    Возвращает JSON-строку, содержащую конфигурацию сети.

    Чтобы загрузить сеть из сохранённого JSON-файла, используйте keras.models.model_from_json(json_string, custom_objects={}).

    Arguments
    **kwargs Дополнительные ключевые аргументы, которые будут переданы в json.dumps().
    Returns
    JSON-строка.

    to_yaml

    Просмотреть исходный код

    to_yaml(
        **kwargs
    )
    

    Возвращает YAML-строку, содержащую конфигурацию сети.

    Чтобы загрузить сеть из сохраненного YAML-файла, используйте keras.models.model_from_yaml(yaml_string, custom_objects={}).

    custom_objects должен быть словарем, сопоставляющим имена пользовательских функций потерь/слоев и т. д. соответствующим функциям/классам.

    Arguments
    **kwargs Дополнительные ключевые аргументы, которые будут переданы в yaml.dump().
    Returns
    YAML-строка.
    Raises
    ImportError если модуль yaml не найден.

    train_on_batch

    Просмотреть исходный код

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

    Выполняет одно обновление градиента на одной пачке данных.

    Аргументы
    x Данные для входных данных. Это может быть:
    • Массив Numpy (или подобный массив), или список массивов (в случае, если модель имеет несколько входных данных).
    • Тензор TensorFlow или список тензоров (в случае, если модель имеет несколько входных данных).
    • Словарь, сопоставляющий имена входных данных соответствующим массивам/тензорам, если модель имеет именованные входные данные.
    y Данные для целевых значений. Как и данные для входных данных x, они могут быть массивами Numpy или тензорами TensorFlow. Они должны быть согласованы с x (вы не можете иметь входные данные Numpy и целевые данные тензора, или наоборот).
    sample_weight Необязательный массив той же длины, что и x, содержащий веса, применяемые к потере модели для каждой выборки. В случае временных данных вы можете передать двумерный массив с формой (выборки, длина_последовательности), чтобы применить разные веса к каждому временной шагу каждой выборки.
    class_weight Необязательный словарь, сопоставляющий индексы классов (целые числа) с весом (вещественное число), применяемым к потере модели для выборок из этого класса во время обучения. Это может быть полезно, чтобы сказать модели «обращать больше внимания» на выборки из недопредставленного класса.
    reset_metrics Если True, возвращаемые метрики будут только для этой партии. Если False, метрики будут накапливаться по партиям.
    return_dict Если True, результаты потери и метрик возвращаются как словарь, где каждый ключ — имя метрики. Если False, они возвращаются как список.
    Возвращаемое значение
    Скалярная ошибка обучения (если модель имеет один выход и нет метрик) или список скаляров (если модель имеет несколько выходов и/или метрик). Атрибут model.metrics_names предоставляет вам метки отображения для скалярных выходов.
    Исключения
    RuntimeError Если model.train_on_batch обернут в tf.function.
    ValueError В случае неверных аргументов, предоставленных пользователем.

    train_step

    Просмотр исходного кода

    train_step(
        data
    )
    

    Логика одного шага обучения.

    Этот метод можно переопределить, чтобы поддержать пользовательскую логику обучения. Этот метод вызывается Model.make_train_function.

    Этот метод должен содержать математическую логику для одного шага обучения. Обычно это включает прямой проход, вычисление потерь, обратное распространение и обновления метрик.

    Подробности конфигурации способа выполнения этой логики (например, tf.function и tf.distribute.Strategy настройки) следует оставлять Model.make_train_function, который также можно переопределить.

    Аргументы
    data Вложенная структура Tensor.
    Возвращаемое значение
    Объект dict, содержащий значения, которые будут переданы tf.keras.callbacks.CallbackList.on_train_batch_end. Обычно возвращаются значения метрик Model . Пример: {'loss': 0.2, 'accuracy': 0.7}.

    © 2020 The TensorFlow Authors. All rights reserved.
    Licensed under the Creative Commons Attribution License 3.0.
    Code samples licensed under the Apache 2.0 License.
    https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/keras/Model

    Spec-Zone.ru

    Настройки Оффлайн Что нового Помощь О нас
    Spec-Zone .ru
    спецификации, руководства, описания, API