tf.keras.Sequential
Sequential объединяет линейный стек слоёв в Model.
Наследует от: Model, Layer, Operation
tf.keras.Sequential(
layers=None, trainable=True, name=None
)
Используется в блокнотах
| Используется в руководстве | Используется в учебных пособиях |
|---|---|
Примеры:
model = keras.Sequential() model.add(keras.Input(shape=(16,))) model.add(keras.layers.Dense(8)) # Note that you can also omit the initial `Input`. # 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 = keras.Sequential() model.add(keras.layers.Dense(8)) model.add(keras.layers.Dense(4)) # model.weights not created yet # Whereas if you specify an `Input`, the model gets built # continuously as you are adding layers: model = keras.Sequential() model.add(keras.Input(shape=(16,))) model.add(keras.layers.Dense(8)) len(model.weights) # Returns "2" # 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 = keras.Sequential() model.add(keras.layers.Dense(8)) model.add(keras.layers.Dense(4)) model.build((None, 16)) len(model.weights) # Returns "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 = keras.Sequential() model.add(keras.layers.Dense(8)) model.add(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)
| Атрибуты | |
|---|---|
compiled_metrics | |
distribute_reduction_method | |
distribute_strategy | |
input | Возвращает входной тензор (или тензоры) символьной операции. Возвращаются только тензоры, соответствующие первому вызову операции. |
input_shape | |
inputs | |
jit_compile | |
layers | |
metrics_names | |
output | Возвращает выходной тензор (или тензоры) слоя. Возвращаются только тензоры, соответствующие первому вызову операции. |
output_shape | |
outputs | |
run_eagerly | |
Методы
add
add(
layer, rebuild=True
)
Добавляет экземпляр слоя поверх стека слоёв.
| Аргументы | |
|---|---|
layer | экземпляр слоя. |
compile
compile(
optimizer='rmsprop',
loss=None,
loss_weights=None,
metrics=None,
weighted_metrics=None,
run_eagerly=False,
steps_per_execution=1,
jit_compile='auto',
auto_scale_loss=True
)
Настраивает модель для обучения.
Пример:
model.compile(
optimizer=keras.optimizers.Adam(learning_rate=1e-3),
loss=keras.losses.BinaryCrossentropy(),
metrics=[
keras.metrics.BinaryAccuracy(),
keras.metrics.FalseNegatives(),
],
)
| Аргументы | |
|---|---|
optimizer | Строка (название оптимизатора) или экземпляр оптимизатора. См. keras.optimizers. |
loss | Функция потерь. Может быть строкой (названием функции потерь) или экземпляром keras.losses.Loss. См. keras.losses. Функция потерь — это любой вызываемый объект с сигнатурой loss = fn(y_true, y_pred), где y_true — истинные значения, а y_pred — предсказания модели. y_true должен иметь форму (batch_size, d0, .. dN) (за исключением разреженных функций потерь, таких как разреженная категориальная кросс-энтропия, которая ожидает целочисленные массивы формы (batch_size, d0, .. dN-1)). y_pred должен иметь форму (batch_size, d0, .. dN). Функция потерь должна возвращать тензор с плавающей точкой. |
loss_weights | Необязательный список или словарь со скалярными коэффициентами (числами Python с плавающей точкой), задающими веса вкладов в функцию потерь для разных выходов модели. Значение функции потерь, минимизируемое моделью, будет взвешенной суммой всех отдельных потерь, умноженных на коэффициенты loss_weights. Если это список, его элементы должны соответствовать выходам модели один к одному. Если это словарь, он должен сопоставлять имена выходов (строки) скалярным коэффициентам. |
metrics | Список метрик, вычисляемых моделью во время обучения и тестирования. Каждая метрика может быть строкой (названием встроенной функции), функцией или экземпляром keras.metrics.Metric. См. keras.metrics. Обычно используются metrics=['accuracy']. Функция — это любой вызываемый объект с сигнатурой result = fn(y_true, _pred). Чтобы задать разные метрики для выходов модели с несколькими выходами, можно также передать словарь, например metrics={'a':'accuracy', 'b':['accuracy', 'mse']}. Можно также передать список, задающий одну метрику или список метрик для каждого выхода, например metrics=[['accuracy'], ['accuracy', 'mse']] или metrics=['accuracy', ['accuracy', 'mse']]. При передаче строк «accuracy» или «acc» мы выбираем один из вариантов: keras.metrics.BinaryAccuracy, keras.metrics.CategoricalAccuracy, keras.metrics.SparseCategoricalAccuracy — в зависимости от форм целевых значений и выхода модели. Аналогичное преобразование выполняется и для строк "crossentropy" и "ce". Переданные здесь метрики вычисляются без учёта весов образцов; если требуется учитывать веса образцов, укажите метрики с помощью аргумента weighted_metrics. |
weighted_metrics | Список метрик, вычисляемых и взвешиваемых с помощью sample_weight или class_weight во время обучения и тестирования. |
run_eagerly | Логическое значение. Если задано True, прямой проход этой модели никогда не будет скомпилирован. Для наилучшей производительности рекомендуется оставить значение False во время обучения и установить True при отладке. |
steps_per_execution | Целое число. Количество пакетов, обрабатываемых за один вызов скомпилированной функции. Обработка нескольких пакетов за один вызов скомпилированной функции может значительно повысить производительность на TPU или небольших моделях с большими накладными расходами Python. За одно выполнение будет обработана максимум одна полная эпоха. Если передано число, превышающее размер эпохи, выполнение будет ограничено размером эпохи. Обратите внимание: если steps_per_execution установлено в N, методы Callback.on_batch_begin и Callback.on_batch_end будут вызываться только через каждые N пакетов (то есть до и после каждого выполнения скомпилированной функции). Не поддерживается бэкендом PyTorch. |
jit_compile | Логическое значение или "auto". Определяет, использовать ли компиляцию XLA при компиляции модели. Для бэкендов jax и tensorflow значение jit_compile="auto" включает компиляцию XLA, если модель её поддерживает, и отключает в противном случае. Для бэкенда torch значение "auto" по умолчанию включает выполнение с нетерпеливым вычислением, а значение jit_compile=True запускает модель с torch.compile на бэкенде "inductor". |
auto_scale_loss | Логическое значение. Если задано True, а политика типа данных модели — "mixed_float16", переданный оптимизатор будет автоматически обёрнут в LossScaleOptimizer, который динамически масштабирует функцию потерь, чтобы предотвратить потерю точности при переполнении снизу. |
compile_from_config
compile_from_config(
config
)
Компилирует модель с параметрами, указанными в конфигурации.
Этот метод использует сведения из конфигурации (оптимизатор, функция потерь, метрики и т. д.) для компиляции модели.
| Аргументы | |
|---|---|
config | Словарь со сведениями для компиляции модели. |
compiled_loss
compiled_loss(
y, y_pred, sample_weight=None, regularization_losses=None
)
compute_loss
compute_loss(
x=None, y=None, y_pred=None, sample_weight=None
)
Вычисляет общую функцию потерь, проверяет её и возвращает результат.
При необходимости подклассы могут переопределить этот метод, чтобы реализовать собственную логику вычисления функции потерь.
Пример:
class MyModel(Model):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.loss_tracker = metrics.Mean(name='loss')
def compute_loss(self, x, y, y_pred, sample_weight):
loss = ops.means((y_pred - y) ** 2)
loss += ops.sum(self.losses)
self.loss_tracker.update_state(loss)
return loss
def reset_metrics(self):
self.loss_tracker.reset_state()
@property
def metrics(self):
return [self.loss_tracker]
inputs = layers.Input(shape=(10,), name='my_input')
outputs = layers.Dense(10)(inputs)
model = MyModel(inputs, outputs)
model.add_loss(ops.sum(outputs))
optimizer = SGD()
model.compile(optimizer, loss='mse', steps_per_execution=10)
dataset = ...
model.fit(dataset, epochs=2, steps_per_epoch=10)
print(f"Custom loss: {model.loss_tracker.result()}")
| Аргументы | |
|---|---|
x | Входные данные. |
y | Целевые данные. |
y_pred | Предсказания, возвращённые моделью (выход model(x)) |
sample_weight | Веса образцов для взвешивания функции потерь. |
| Возвращает | |
|---|---|
Общую функцию потерь в виде скалярного тензора или None, если результат вычисления функции потерь отсутствует (так бывает при вызове из Model.test_step). |
compute_metrics
compute_metrics(
x, y, y_pred, sample_weight=None
)
Обновляет состояния метрик и собирает все метрики, которые будут возвращены.
При необходимости подклассы могут переопределить этот метод, чтобы реализовать собственную логику обновления и сбора метрик.
Пример:
class MyModel(Sequential):
def compute_metrics(self, x, y, y_pred, sample_weight):
# This super call updates `self.compiled_metrics` and returns
# results for all metrics listed in `self.metrics`.
metric_results = super().compute_metrics(
x, y, y_pred, sample_weight)
# Note that `self.custom_metric` is not listed
# in `self.metrics`.
self.custom_metric.update_state(x, y, y_pred, sample_weight)
metric_results['metric_name'] = self.custom_metric.result()
return metric_results
| Аргументы | |
|---|---|
x | Входные данные. |
y | Целевые данные. |
y_pred | Предсказания, возвращённые моделью (выход model.call(x)). |
sample_weight | Веса образцов для взвешивания функции потерь. |
| Возвращает | |
|---|---|
Объект dict, содержащий значения, которые будут переданы в keras.callbacks.CallbackList.on_train_batch_end(). Обычно возвращаются значения метрик, перечисленных в self.metrics. | |
Example | {'loss': 0.2, 'accuracy': 0.7}. |
evaluate
evaluate(
x=None,
y=None,
batch_size=None,
verbose='auto',
sample_weight=None,
steps=None,
callbacks=None,
return_dict=False,
**kwargs
)
Возвращает значение функции потерь и значения метрик модели в режиме тестирования.
Вычисления выполняются пакетами (см. аргумент batch_size).
| Аргументы | |
|---|---|
x | Входные данные. Это могут быть:
|
y | Целевые данные. Как и входные данные x, это могут быть массивы NumPy или тензоры, поддерживаемые бэкендом. Если x — это экземпляр tf.data.Dataset или keras.utils.PyDataset, указывать y не нужно (целевые значения будут получены из итератора или набора данных). |
batch_size | Целое число или None. Количество образцов в пакете для вычислений. Если значение не указано, batch_size по умолчанию будет равно 32. Не указывайте batch_size, если данные представлены в виде набора данных, генераторов или экземпляров keras.utils.PyDataset (так как они формируют пакеты). |
verbose | "auto", 0, 1 или 2. Режим подробного вывода. 0 = без вывода, 1 = индикатор выполнения, 2 = одна строка. В большинстве случаев "auto" становится равным 1. Обратите внимание: индикатор выполнения мало полезен при записи в файл, поэтому при неинтерактивном запуске (например, в производственной среде) рекомендуется использовать verbose=2. По умолчанию используется "auto". |
sample_weight | Необязательный массив NumPy с весами тестовых образцов, используемыми для взвешивания функции потерь. Можно передать одномерный массив NumPy длиной, равной числу входных образцов (соответствие весов и образцов один к одному). Для временных данных можно передать двумерный массив формы (samples, sequence_length), чтобы задать разные веса для каждого временного шага каждого образца. Этот аргумент не поддерживается, если x — набор данных; вместо этого передайте веса образцов третьим элементом x. |
steps | Целое число или None. Общее количество шагов (пакетов образцов), после которого оценивание считается завершённым. Игнорируется при значении по умолчанию None. Если x — это tf.data.Dataset, а steps — None, оценивание будет выполняться до исчерпания набора данных. |
callbacks | Список экземпляров keras.callbacks.Callback. Список обратных вызовов, применяемых во время оценивания. |
return_dict | Если задано True, результаты вычисления функции потерь и метрик возвращаются в виде словаря, где каждому ключу соответствует название метрики. Если задано False, они возвращаются в виде списка. |
| Возвращает | |
|---|---|
Скалярное значение потерь на тестовых данных (если у модели один выход и нет метрик) или список скалярных значений (если у модели несколько выходов и/или метрик). Атрибут model.metrics_names содержит отображаемые подписи скалярных выходов. |
export
export(
filepath, format='tf_saved_model'
)
Создаёт артефакт TF SavedModel для вывода.
Примечание: В настоящее время этот метод можно использовать только с бэкендами TensorFlow или JAX.
Этот метод позволяет экспортировать модель в облегчённый артефакт SavedModel, содержащий только прямой проход модели (её метод call()), который можно обслуживать, например, с помощью TF-Serving. Прямой проход регистрируется под именем serve() (см. пример ниже).
Исходный код модели (включая любые использованные пользовательские слои) больше не нужен для повторной загрузки артефакта — он полностью автономен.
| Аргументы | |
|---|---|
filepath | Объект str или pathlib.Path. Путь для сохранения артефакта. |
Пример:
# Create the artifact
model.export("path/to/location")
# Later, in a different process / environment...
reloaded_artifact = tf.saved_model.load("path/to/location")
predictions = reloaded_artifact.serve(input_data)
Для настройки конечных точек обслуживания можно использовать низкоуровневый класс keras.export.ExportArchive. Метод export() внутри использует ExportArchive.
fit
fit(
x=None,
y=None,
batch_size=None,
epochs=1,
verbose='auto',
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
)
Обучает модель в течение фиксированного количества эпох (итераций по набору данных).
| Аргументы | |
|---|---|
x | Входные данные. Это могут быть:
|
y | Целевые данные. Как и входные данные x, это могут быть массивы NumPy или тензоры, поддерживаемые бэкендом. Если x — это набор данных, генератор или экземпляр keras.utils.PyDataset, указывать y не нужно (целевые значения будут получены из x). |
batch_size | Целое число или None. Количество образцов на одно обновление градиента. Если значение не указано, batch_size по умолчанию будет равно 32. Не указывайте batch_size, если данные представлены в виде наборов данных, генераторов или экземпляров keras.utils.PyDataset (так как они формируют пакеты). |
epochs | Целое число. Количество эпох обучения модели. Эпоха — это проход по всем предоставленным данным x и y (если только флаг steps_per_epoch не имеет значение, отличное от None). Обратите внимание: в сочетании с initial_epoch параметр epochs следует понимать как «номер последней эпохи». Модель обучается не в течение числа итераций, заданного параметром epochs, а только до достижения эпохи с индексом epochs. |
verbose | "auto", 0, 1 или 2. Режим подробного вывода. 0 = без вывода, 1 = индикатор выполнения, 2 = одна строка на эпоху. В большинстве случаев значение «auto» становится равным 1. Обратите внимание: индикатор выполнения мало полезен при записи в файл, поэтому при неинтерактивном запуске (например, в производственной среде) рекомендуется использовать verbose=2. По умолчанию используется "auto". |
callbacks | Список экземпляров keras.callbacks.Callback. Список обратных вызовов, применяемых во время обучения. См. keras.callbacks. Обратите внимание: обратные вызовы keras.callbacks.ProgbarLogger и keras.callbacks.History создаются автоматически и их не нужно передавать в model.fit(). Создание keras.callbacks.ProgbarLogger зависит от аргумента verbose в model.fit(). |
validation_split | Число с плавающей точкой от 0 до 1. Доля обучающих данных, используемая для валидации. Эта часть обучающих данных будет отделена от остальных, не будет использоваться для обучения, а в конце каждой эпохи на ней будут вычисляться функция потерь и все метрики модели. Данные для валидации выбираются из последних образцов предоставленных данных x и y до перемешивания. Этот аргумент не поддерживается, если x — набор данных, генератор или экземпляр keras.utils.PyDataset. Если указаны и validation_data, и validation_split, validation_data имеет приоритет над validation_split. |
validation_data | Данные для вычисления функции потерь и метрик модели в конце каждой эпохи. Модель не будет обучаться на этих данных. Поэтому обратите внимание: на функцию потерь для валидационных данных, переданных через validation_split или validation_data, не влияют регуляризующие слои, такие как шум и прореживание. validation_data имеет приоритет над validation_split. Возможны следующие варианты: (x_val, y_val) из массивов NumPy или тензоров.(x_val, y_val, val_sample_weights) из массивов NumPy.tf.data.Dataset.keras.utils.PyDataset, возвращающий (inputs, targets) или (inputs, targets, sample_weights). |
shuffle | Логическое значение, определяющее, нужно ли перемешивать обучающие данные перед каждой эпохой. Этот аргумент игнорируется, если x — генератор или tf.data.Dataset. |
class_weight | Необязательный словарь, сопоставляющий индексы классов (целые числа) весам (значениям с плавающей точкой), используемым для взвешивания функции потерь (только во время обучения). Это может быть полезно, чтобы указать модели уделять больше внимания образцам из недостаточно представленного класса. Если задан class_weight и ранг целевых значений равен 2 или больше, y должны быть закодированы в формате one-hot либо для разреженных меток классов должно быть явно указано последнее измерение 1. |
sample_weight | Необязательный массив NumPy с весами обучающих образцов, используемыми для взвешивания функции потерь (только во время обучения). Можно передать одномерный массив NumPy длиной, равной числу входных образцов (соответствие весов и образцов один к одному). Для временных данных можно передать двумерный массив формы (samples, sequence_length), чтобы задать разные веса для каждого временного шага каждого образца. Этот аргумент не поддерживается, если x — набор данных, генератор или экземпляр keras.utils.PyDataset; вместо этого передайте веса образцов третьим элементом x. Обратите внимание: веса образцов не применяются к метрикам, указанным через аргумент metrics в compile(). Чтобы применить веса образцов к метрикам, укажите их через weighted_metrics в compile(). |
initial_epoch | Целое число. Эпоха, с которой нужно начать обучение (полезно для возобновления предыдущего процесса обучения). |
steps_per_epoch | Целое число или None. Общее количество шагов (пакетов образцов), после которого текущая эпоха считается завершённой и начинается следующая. При обучении на входных тензорах, например тензорах, поддерживаемых бэкендом, значение None по умолчанию равно количеству образцов в наборе данных, делённому на размер пакета, или 1, если это значение невозможно определить. Если x — это tf.data.Dataset, а steps_per_epoch — None, эпоха продолжается до исчерпания входного набора данных. При передаче бесконечно повторяющегося набора данных необходимо указать аргумент steps_per_epoch. Если steps_per_epoch=-1, обучение бесконечно продолжается на бесконечно повторяющемся наборе данных. |
validation_steps | Имеет значение только при наличии validation_data. Общее количество шагов (пакетов образцов), обрабатываемых до завершения валидации в конце каждой эпохи. Если validation_steps — None, валидация продолжается до исчерпания набора данных validation_data. Бесконечно повторяющийся набор данных приведёт к бесконечному циклу. Если задан validation_steps и обрабатывается только часть набора данных, оценивание в каждой эпохе начинается с начала набора. Это гарантирует, что каждый раз используются одни и те же образцы для валидации. |
validation_batch_size | Целое число или None. Количество образцов в пакете для валидации. Если значение не указано, по умолчанию используется batch_size. Не указывайте validation_batch_size, если данные представлены в виде наборов данных или экземпляров keras.utils.PyDataset (так как они формируют пакеты). |
validation_freq | Имеет значение только при наличии данных для валидации. Указывает, сколько эпох обучения выполнять до следующей валидации. Например, validation_freq=2 запускает валидацию каждые две эпохи. |
Поведение распаковки для входных данных, подобных итераторам: распространённый шаблон — передать объект, подобный итератору, например tf.data.Dataset или keras.utils.PyDataset, в fit(), который фактически возвращает не только признаки (x), но также, при необходимости, целевые значения (y) и веса примеров (sample_weight). Keras требует, чтобы выходные данные таких объектов, подобных итераторам, не допускали неоднозначной интерпретации. Итератор должен возвращать кортеж длины 1, 2 или 3, причём необязательные второй и третий элементы будут использоваться соответственно для y и sample_weight. Любой другой переданный тип будет обёрнут в кортеж длины 1, фактически рассматривая всё как x. При возвращении словарей они всё равно должны соответствовать структуре кортежа верхнего уровня, например ({"x0": x0, "x1": x1}, y). Keras не будет пытаться разделить признаки, целевые значения и веса по ключам одного словаря. Один из примечательных неподдерживаемых типов данных — namedtuple. Причина в том, что он ведёт себя одновременно как упорядоченный тип данных (кортеж) и как тип данных-отображение (словарь). Поэтому для именованного кортежа вида namedtuple("example_tuple", ["y", "x"]) возникает неоднозначность: следует ли менять порядок элементов при интерпретации значения. Ещё более неоднозначен кортеж вида namedtuple("other_tuple", ["x", "y", "z"]): непонятно, предназначен ли он для распаковки в x, y и sample_weight или для передачи целиком в качестве одного элемента в x.
| Возвращает | |
|---|---|
Объект History. Его атрибут History.history содержит запись значений функции потерь и метрик на последовательных эпохах, а также значений функции потерь и метрик на проверочной выборке (если применимо). |
from_config
@classmethod
from_config(
config, custom_objects=None
)
Создаёт слой на основе его конфигурации.
Этот метод является обратным для get_config и позволяет создать экземпляр того же слоя из словаря конфигурации. Он не обрабатывает связи между слоями (это выполняется Network) и веса (это выполняется set_weights).
| Аргументы | |
|---|---|
config | Словарь Python, обычно являющийся результатом вызова get_config. |
| Возвращает | |
|---|---|
| Экземпляр слоя. |
get_compile_config
get_compile_config()
Возвращает сериализованную конфигурацию со сведениями о компиляции модели.
Этот метод возвращает словарь конфигурации со всеми сведениями (оптимизатор, функция потерь, метрики и т. д.), использованными при компиляции модели.
| Возвращает | |
|---|---|
| Словарь со сведениями о компиляции модели. |
get_layer
get_layer(
name=None, index=None
)
Получает слой по его имени (которое должно быть уникальным) или индексу.
Если указаны и name, и index, приоритет будет у index. Индексы определяются порядком горизонтального обхода графа (снизу вверх).
| Аргументы | |
|---|---|
name | Строка, имя слоя. |
index | Целое число, индекс слоя. |
| Возвращает | |
|---|---|
| Экземпляр слоя. |
get_metrics_result
get_metrics_result()
Возвращает значения метрик модели в виде словаря.
Если результат какой-либо метрики представляет собой словарь (содержащий несколько метрик), каждая из них добавляется в словарь верхнего уровня, возвращаемый этим методом.
| Возвращает | |
|---|---|
Объект dict со значениями метрик, перечисленных в self.metrics. | |
Example | {'loss': 0.2, 'accuracy': 0.7}. |
load_weights
load_weights(
filepath, skip_mismatch=False, **kwargs
)
Загружает веса из файла, сохранённого с помощью save_weights().
Веса загружаются на основе топологии сети. Это означает, что архитектура должна совпадать с той, которая использовалась при сохранении весов. Обратите внимание: слои без весов не учитываются при топологической сортировке, поэтому их можно добавлять и удалять, если у них нет весов.
Частичная загрузка весов
Если вы изменили модель, например добавили новый слой (с весами) или изменили форму весов слоя, можно проигнорировать ошибки и продолжить загрузку, установив skip_mismatch=True. В этом случае все слои с несовпадающими весами будут пропущены. Для каждого пропущенного слоя будет показано предупреждение.
| Аргументы | |
|---|---|
filepath | Строка, путь к файлу весов для загрузки. Это может быть файл .weights.h5 или файл весов устаревшего формата .h5. |
skip_mismatch | Логическое значение: следует ли пропускать загрузку слоёв, если количество весов или их форма не совпадает. |
loss
loss(
y, y_pred, sample_weight=None
)
make_predict_function
make_predict_function(
force=False
)
make_test_function
make_test_function(
force=False
)
make_train_function
make_train_function(
force=False
)
pop
pop(
rebuild=True
)
Удаляет последний слой модели.
predict
predict(
x, batch_size=None, verbose='auto', steps=None, callbacks=None
)
Формирует прогнозы для входных примеров.
Вычисления выполняются пакетами. Этот метод предназначен для пакетной обработки большого количества входных данных. Он не предназначен для использования внутри циклов, которые перебирают ваши данные и за раз обрабатывают небольшое количество входных данных.
Для небольшого количества входных данных, помещающихся в один пакет, используйте напрямую __call__() для ускорения выполнения, например model(x), или model(x, training=False), если в модели есть такие слои, как BatchNormalization, поведение которых при инференсе отличается.
Примечание: Подробнее о различиях между методамиModelpredict()и__call__()см. в этом ответе на часто задаваемый вопрос.
| Аргументы | |
|---|---|
x | Входные примеры. Допустимые варианты:
|
batch_size | Целое число или None. Количество примеров в пакете. Если не указано, для batch_size по умолчанию используется значение 32. Не указывайте batch_size, если данные представлены в виде набора данных, генераторов или экземпляров keras.utils.PyDataset (поскольку они формируют пакеты). |
verbose | "auto", 0, 1 или 2. Режим отображения сведений о ходе выполнения. 0 = без вывода, 1 = индикатор выполнения, 2 = одна строка. В большинстве случаев "auto" принимает значение 1. Обратите внимание: индикатор выполнения не особенно полезен при записи в файл, поэтому при запуске без интерактивного взаимодействия (например, в производственной среде) рекомендуется использовать verbose=2. По умолчанию используется "auto". |
steps | Общее количество шагов (пакетов примеров) до завершения цикла прогнозирования. Игнорируется при значении по умолчанию None. Если x — это tf.data.Dataset, а steps имеет значение None, predict() будет выполняться, пока входной набор данных не закончится. |
callbacks | Список экземпляров keras.callbacks.Callback. Список обратных вызовов, применяемых во время прогнозирования. |
| Возвращает | |
|---|---|
| Массивы NumPy с прогнозами. |
predict_on_batch
predict_on_batch(
x
)
Возвращает прогнозы для одного пакета примеров.
| Аргументы | |
|---|---|
x | Входные данные. Должны быть объектом, подобным массиву. |
| Возвращает | |
|---|---|
| Массивы NumPy с прогнозами. |
predict_step
predict_step(
data
)
reset_metrics
reset_metrics()
save
save(
filepath, overwrite=True, **kwargs
)
Сохраняет модель в файл .keras.
| Аргументы | |
|---|---|
filepath | Объект str или pathlib.Path. Путь для сохранения модели. Должен оканчиваться на .keras. |
overwrite | Следует ли перезаписать существующую модель в целевом расположении или вместо этого запросить подтверждение у пользователя в интерактивном режиме. |
save_format | Аргумент save_format устарел в Keras 3. Формат для использования в виде строки. В настоящее время поддерживается только формат "keras". |
Пример:
model = keras.Sequential(
[
keras.layers.Dense(5, input_shape=(3,)),
keras.layers.Softmax(),
],
)
model.save("model.keras")
loaded_model = keras.saving.load_model("model.keras")
x = keras.random.uniform((10, 3))
assert np.allclose(model.predict(x), loaded_model.predict(x))
Обратите внимание, что model.save() — это псевдоним для keras.saving.save_model().
Сохранённый файл .keras содержит:
- Конфигурацию модели (архитектуру)
- Веса модели
- Состояние оптимизатора модели (если оно есть)
Таким образом, модели можно восстановить в точно таком же состоянии.
save_weights
save_weights(
filepath, overwrite=True
)
Сохраняет веса всех слоёв в файл .weights.h5.
| Аргументы | |
|---|---|
filepath | Объект str или pathlib.Path. Путь для сохранения модели. Должен оканчиваться на .weights.h5. |
overwrite | Следует ли перезаписать существующую модель в целевом расположении или вместо этого запросить подтверждение у пользователя в интерактивном режиме. |
stateless_compute_loss
stateless_compute_loss(
trainable_variables,
non_trainable_variables,
metrics_variables,
x=None,
y=None,
y_pred=None,
sample_weight=None
)
summary
summary(
line_length=None,
positions=None,
print_fn=None,
expand_nested=False,
show_trainable=False,
layer_range=None
)
Выводит текстовую сводку о сети.
| Аргументы | |
|---|---|
line_length | Общая длина выводимых строк (например, задайте это значение, чтобы настроить отображение под размер окна терминала). |
positions | Относительные или абсолютные позиции элементов журнала в каждой строке. Если не указано, становится [0.3, 0.6, 0.70, 1.]. По умолчанию используется None. |
print_fn | Используемая функция вывода. По умолчанию вывод выполняется в stdout. Если stdout не работает в вашей среде, замените его на print. Она будет вызываться для каждой строки сводки. Можно задать пользовательскую функцию, чтобы перехватить текст сводки. |
expand_nested | Следует ли раскрывать вложенные модели. По умолчанию используется False. |
show_trainable | Следует ли показывать, доступен ли слой для обучения. По умолчанию используется False. |
layer_range | Список или кортеж из 2 строк: имени начального слоя и имени конечного слоя (оба включительно), задающих диапазон слоёв для вывода в сводке. Вместо точных имён также принимаются регулярные выражения. В этом случае начальным предикатом будет первый элемент, соответствующий layer_range[0], а конечным — последний элемент, соответствующий layer_range[1]. По умолчанию используется None, включающий все слои модели. |
| Вызывает исключение | |
|---|---|
ValueError | если summary() вызван до построения модели. |
symbolic_call
symbolic_call(
*args, **kwargs
)
test_on_batch
test_on_batch(
x, y=None, sample_weight=None, return_dict=False
)
Проверяет модель на одном пакете примеров.
| Аргументы | |
|---|---|
x | Входные данные. Должны быть объектом, подобным массиву. |
y | Целевые данные. Должны быть объектом, подобным массиву. |
sample_weight | Необязательный массив той же длины, что и x, содержащий веса, применяемые к функции потерь модели для каждого примера. Для временных данных можно передать двумерный массив формы (samples, sequence_length), чтобы задать отдельный вес для каждого временного шага каждого примера. |
return_dict | Если True, результаты функции потерь и метрик возвращаются в виде словаря, где каждому ключу соответствует имя метрики. Если False, они возвращаются в виде списка. |
| Возвращает | |
|---|---|
Скалярное значение функции потерь (если метрик нет и задано return_dict=False), список значений функции потерь и метрик (если метрики есть и задано return_dict=False) или словарь значений метрик и функции потерь (если задано return_dict=True). |
test_step
test_step(
data
)
to_json
to_json(
**kwargs
)
Возвращает строку JSON с конфигурацией сети.
Чтобы загрузить сеть из файла JSON, используйте keras.models.model_from_json(json_string, custom_objects={...}).
| Аргументы | |
|---|---|
**kwargs | Дополнительные именованные аргументы, передаваемые в json.dumps(). |
| Возвращает | |
|---|---|
| Строка JSON. |
train_on_batch
train_on_batch(
x, y=None, sample_weight=None, class_weight=None, return_dict=False
)
Выполняет одно обновление градиента на одном пакете данных.
| Аргументы | |
|---|---|
x | Входные данные. Должны быть объектом, подобным массиву. |
y | Целевые данные. Должны быть объектом, подобным массиву. |
sample_weight | Необязательный массив той же длины, что и x, содержащий веса, применяемые к функции потерь модели для каждого примера. Для временных данных можно передать двумерный массив формы (samples, sequence_length), чтобы задать отдельный вес для каждого временного шага каждого примера. |
class_weight | Необязательный словарь, сопоставляющий индексы классов (целые числа) с весами (числа с плавающей точкой), применяемыми к функции потерь модели для примеров этого класса во время обучения. Это может быть полезно, чтобы указать модели уделять больше внимания примерам недостаточно представленного класса. Если задано class_weight, а ранг целевых данных равен 2 или больше, либо y должны быть закодированы методом one-hot, либо для разреженных меток классов необходимо явно добавить последнее измерение длины 1. |
return_dict | Если True, результаты функции потерь и метрик возвращаются в виде словаря, где каждому ключу соответствует имя метрики. Если False, они возвращаются в виде списка. |
| Возвращает | |
|---|---|
Скалярное значение функции потерь (если метрик нет и задано return_dict=False), список значений функции потерь и метрик (если метрики есть и задано return_dict=False) или словарь значений метрик и функции потерь (если задано return_dict=True). |
train_step
train_step(
data
)
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/Sequential