Spec-Zone.ru › TensorFlow 2.3

tf.keras.Model

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

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

Наследуется от: Layer

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

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

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.

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

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

Методы

compile

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

compile(
    optimizer='rmsprop', loss=None, metrics=None, loss_weights=None,
    weighted_metrics=None, run_eagerly=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], за исключением функций потерь sparse, таких как sparse categorical crossentropy, где форма = [batch_size, d0, .. dN-1]. y_pred = предсказанные значения с формой = [batch_size, d0, .. dN]. Она возвращает весовой скалярный тензор потерь. Если используется экземпляр пользовательской 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 Список метрик, которые будут оцениваться и взвешиваться весом образца или весом класса во время обучения и тестирования.
run_eagerly Bool. По умолчанию False. Если True, логика этого Model не будет обернута в tf.function. Рекомендуется оставить это как None , если ваша Model не может быть запущена внутри tf.function.
**kwargs Любые дополнительные аргументы. Поддерживаемые аргументы:
  • experimental_steps_per_execution: Целое число. Количество батчей, которые будут выполняться во время каждого вызова tf.function. Выполнение нескольких батчей внутри одного вызова tf.function может значительно улучшить производительность на TPU или небольших моделях с большой накладными расходами Python. Обратите внимание, что если это значение установлено в N, методы Callback.on_batch будут вызываться только каждые N батчей. В настоящее время по умолчанию 1. Максимально за один раз выполняется одна полная эпоха. Если передано число, большее, чем размер эпохи, выполнение будет усечено до размера эпохи.
  • sample_weight_mode для обратной совместимости.
Возможные исключения
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 весов для тестовых выборок, используемых для взвешивания функции потерь. Можно передать плоский (одномерный) массив Numpy с такой же длиной, как у входных выборок (сопоставление 1:1 между весами и выборками), или, в случае временных данных, можно передать двумерный массив с формой (samples, sequence_length), чтобы применить разные веса к каждому временному шагу каждой выборки. Этот аргумент не поддерживается, когда x является набором данных; вместо этого передайте веса выборок как третий элемент x.
steps Целое число или None. Общее количество шагов (батчей выборок) перед завершением этапа оценки. Игнорируется при значении по умолчанию None. Если x является набором данных tf.data, а steps равно None, 'evaluate' будет выполняться до тех пор, пока набор данных не будет исчерпан. Этот аргумент не поддерживается с входными массивами.
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. Обратите внимание, что, поскольку эта реализация использует многопроцессорность, вы не должны передавать несериализуемые аргументы в генератор, так как их трудно передать дочерним процессам.
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, который поддерживает генераторы.

УСТАРЕЛО:

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.
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, который поддерживает генераторы.

    УСТАРЕЛО:

    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. Список колбеков, которые нужно применять во время предсказания. Смотрите колбеки.
    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, вы не должны передавать не сериализуемые аргументы в генератор, так как их нельзя легко передать дочерним процессам.

    См. обсуждение 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, который поддерживает генераторы.

    УСТАРЕЛО:

    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 Вложенная структура Tensor.
    Возвращаемое значение
    Результат одного шага инференции, как правило, выходной результат вызова 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
    )
    

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

    Файл сохранения содержит:

    • Архитектуру модели, позволяющую повторно создать модель.
    • Веса модели.
    • Состояние оптимизатора, позволяющее продолжить обучение ровно с того места, где вы остановились.

    Это позволяет сохранить все состояние модели в одном файле.

    Сохранённые модели можно восстановить с помощью keras.models.load_model. Модель, возвращённая методом load_model, является скомпилированной моделью, готовой к использованию (если только сохранённая модель не была скомпилирована в первом месте).

    Модели, созданные с помощью API Sequential и Functional, могут быть сохранены в форматах HDF5 и SavedModel. Подклассированные модели могут быть сохранены только в формате SavedModel.

    Обратите внимание, что веса модели могут иметь разные имена области видимости после загрузки. Имена области видимости включают имена модели/слоя, такие как "dense_1/kernel:0". Рекомендуется использовать свойства слоя для доступа к конкретным переменным, например, model.get_layer("dense_1").kernel.

    Аргументы
    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 Необязательный объект tf.saved_model.SaveOptions, который определяет параметры сохранения в SavedModel.

    Пример:

    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 см. руководство по контрольным точкам обучения.

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

    summary

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

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

    Выводит текстовое описание сети.

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

    test_on_batch

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

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

    Тестирование модели на одной порции примеров.

    Аргументы
    x Данные входных данных. Это может быть: - Массив Numpy (или подобный массив), или список массивов (в случае наличия нескольких входных данных). - Тензор TensorFlow или список тензоров (в случае наличия нескольких входных данных).
    • Словарь, сопоставляющий имена входных данных соответствующим массивам/тензорам, если у модели есть именованные входные данные.
    y Данные целевых значений. Подобно входным данным x, это могут быть массивы Numpy или тензоры TensorFlow. Они должны быть согласованы с x (вы не можете иметь входные данные Numpy и целевые тензоры или наоборот).
    sample_weight Необязательный массив той же длины, что и x, содержащий веса, применяемые к функции потерь модели для каждого примера. В случае временных данных вы можете передать двумерный массив с формой (примеры, длина_последовательности), чтобы применить разные веса к каждому шагу во времени для каждого примера.
    reset_metrics Если True, метрики, которые возвращаются, будут только для этой порции. Если False, метрики будут накапливаться по всем порциям.
    return_dict Если True, результаты потерь и метрик возвращаются как словарь, где каждый ключ — имя метрики. Если False, они возвращаются как список.
    Возвращаемое значение
    Скалярная потеря при тестировании (если у модели один выход и нет метрик) или список скаляров (если у модели несколько выходов и/или метрик). Атрибут model.metrics_names предоставит вам метки для отображения скалярных выходов.
    Исключения
    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, который также может быть переопределён.

    Аргументы
    data Вложенная структура Tensor.
    Возвращаемое значение
    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={}).

    Аргументы
    **kwargs Дополнительные ключевые аргументы, которые нужно передать в json.dumps().
    Возвращаемое значение
    Строка JSON.

    to_yaml

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

    to_yaml(
        **kwargs
    )
    

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

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

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

    Аргументы
    **kwargs Дополнительные ключевые аргументы, которые нужно передать в yaml.dump().
    Возвращаемое значение
    Строка YAML.
    Исключения
    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 Вложенная структура Tensors.
    Возвращаемое значение
    Объект 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.3/api_docs/python/tf/keras/Model

    Spec-Zone.ru

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