Spec-Zone.ru › TensorFlow 2.3

tf.keras.Sequential

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

Sequential объединяет линейную стопку слоёв в tf.keras.Model.

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

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

tf.keras.models.Sequential

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

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

tf.compat.v1.keras.Sequential, tf.compat.v1.keras.models.Sequential

tf.keras.Sequential(
    layers=None, name=None
)

Sequential предоставляет функции обучения и вывода для этой модели.

Примеры:

# Optionally, the first layer can receive an `input_shape` argument:
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8, input_shape=(16,)))
# Afterwards, we do automatic shape inference:
model.add(tf.keras.layers.Dense(4))
# This is identical to the following:
model = tf.keras.Sequential()
model.add(tf.keras.Input(shape=(16,)))
model.add(tf.keras.layers.Dense(8))
# Note that you can also omit the `input_shape` argument.
# In that case the model doesn't have any weights until the first call
# to a training/evaluation method (since it isn't yet built):
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8))
model.add(tf.keras.layers.Dense(4))
# model.weights not created yet
# Whereas if you specify the input shape, the model gets built
# continuously as you are adding layers:
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8, input_shape=(16,)))
model.add(tf.keras.layers.Dense(4))
len(model.weights)
4
# When using the delayed-build pattern (no input shape specified), you can
# choose to manually build your model by calling
# `build(batch_input_shape)`:
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8))
model.add(tf.keras.layers.Dense(4))
model.build((None, 16))
len(model.weights)
4
# Note that when using the delayed-build pattern (no input shape specified),
# the model gets built the first time you call `fit`, `eval`, or `predict`,
# or the first time you call the model on some input data.
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8))
model.add(tf.keras.layers.Dense(1))
model.compile(optimizer='sgd', loss='mse')
# This builds the model for the first time:
model.fit(x, y, batch_size=32, epochs=10)
Аргументы
layers Необязательный список слоёв для добавления в модель.
name Необязательное имя для модели.
Атрибуты
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-код. Модель может выполняться медленнее, но это упростит отладку, позволяя шагать по отдельным вызовам слоёв.

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

Методы

add

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

add(
    layer
)

Добавляет экземпляр слоя поверх стека слоёв.

Аргументы
layer Экземпляр слоя.
Исключения
TypeError Если layer не является экземпляром слоя.
ValueError В случае, если аргумент layer не знает форму входных данных.
ValueError В случае, если у аргумента layer несколько выходных тензоров или он уже где-то подключён (запрещено в моделях Sequential).

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 = значения ground truth с формой = [batch_size, d0, .. dN], за исключением функций потерь sparse, таких как sparse categorical crossentropy, где форма = [batch_size, d0, .. dN-1]. y_pred = предсказанные значения с формой = [batch_size, d0, .. dN]. Она возвращает взвешенное значение потери float tensor. Если используется пользовательский экземпляр 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. Если это список, ожидается 1:1 соответствие с выходами модели. Если это словарь, ожидается соответствие имён выходов (строки) скалярным коэффициентам.
weighted_metrics Список метрик, которые будут оцениваться и взвешиваться весами образцов или классами во время обучения и тестирования.
run_eagerly Булево значение. По умолчанию 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 и целевые значения tensor, или наоборот). Если 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 весов для обучающих образцов, используемых для взвешивания функции потерь (только во время обучения). Вы можете передать плоский (1D) массив Numpy с такой же длиной, как у входных образцов (сопоставление 1:1 между весами и образцами), или в случае временных данных вы можете передать 2D массив с формой (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 соответственно. Любой другой тип будет обернут в кортеж длиной 1, эффективно рассматривая все как '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}.

    pop

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

    pop()
    

    Удаляет последний слой в модели.

    Исключения
    TypeError если в модели нет слоёв.

    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_classes

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

    predict_classes(
        x, batch_size=32, verbose=0
    )
    

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

    Предупреждение: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена после 2021-01-01. Инструкции по обновлению: Используйте вместо этого:* np.argmax(model.predict(x), axis=-1), если ваша модель выполняет многоклассовую классификацию (например, если она использует активацию softmax последнего слоя).* (model.predict(x) > 0.5).astype("int32"), если ваша модель выполняет бинарную классификацию (например, если она использует активацию sigmoid последнего слоя).

    Входящие образцы обрабатываются по частям.

    Аргументы
    x входные данные, как массив NumPy или список массивов NumPy (если у модели несколько входов).
    batch_size целое число.
    verbose режим отображения, 0 или 1.
    Возвращаемое значение
    Массив NumPy прогнозов класса.

    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_proba

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

    predict_proba(
        x, batch_size=32, verbose=0
    )
    

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

    Предупреждение: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена после 2021-01-01. Инструкции по обновлению: Используйте model.predict() вместо этого.

    Входные образцы обрабатываются по частям.

    Аргументы
    x входные данные, как массив NumPy или список массивов NumPy (если у модели несколько входов).
    batch_size целое число.
    verbose режим отображения, 0 или 1.
    Возвращаемое значение
    Массив NumPy прогнозов вероятностей.

    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
    )
    

    Сохраняет модель в формате 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, содержащий веса, которые нужно применить к функции потерь модели для каждого образца. В случае временных данных можно передать 2D-массив с формой (образцы, длина_последовательности), чтобы применить разные веса к каждому шагу во времени каждого образца.
    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 Вложенная структура 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.3/api_docs/python/tf/keras/Sequential

    Spec-Zone.ru

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