Spec-Zone.ru › TensorFlow

tf.keras.Model

Модель, группирующая слои в объект с функциями обучения/вывода.

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

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

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

tf.keras.models.Model

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

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

tf.compat.v1.keras.Model

tf.keras.Model(
    *args, **kwargs
)

Используется в блокнотах

Используется в руководстве Используется в учебниках
  • Использование моделей TF1.x в рабочих процессах TF2
  • Миграция `tf.feature_column` в слои предобработки Keras
  • Отладка конвейера обучения, мигрированного в TensorFlow 2
  • Вступление к модулям, слоям и моделям
  • Основные циклы обучения
  • Прогнозирование временных рядов
  • Загрузка pandas DataFrame
  • Обучение с сервером параметров с помощью ParameterServerStrategy
  • Введение в автоэнкодеры
  • Сжатие данных с помощью обучения

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

С помощью "Функционального API"

Вы начинаете с Input, вы цепочкой вызовов слоёв указываете прямой проход модели, и, наконец, создаёте модель из входных и выходных данных:

inputs = keras.Input(shape=(37,))
x = keras.layers.Dense(32, activation="relu")(inputs)
outputs = keras.layers.Dense(5, activation="softmax")(x)
model = keras.Model(inputs=inputs, outputs=outputs)
Примечание: Поддерживаются только словари, списки и кортежи входных тензоров. Вложенные входные данные не поддерживаются (например, списки списков или словари словарей).

Новая модель Functional API также может быть создана с использованием промежуточных тензоров. Это позволяет быстро извлечь подкомпоненты модели.

Пример:

inputs = keras.Input(shape=(None, None, 3))
processed = keras.layers.RandomCrop(width=128, height=128)(inputs)
conv = keras.layers.Conv2D(filters=32, kernel_size=3)(processed)
pooling = keras.layers.GlobalAveragePooling2D()(conv)
feature = keras.layers.Dense(10)(pooling)

full_model = keras.Model(inputs, feature)
backbone = keras.Model(processed, conv)
activations = keras.Model(conv, feature)

Обратите внимание, что модели backbone и activations не создаются с помощью объектов keras.Input, а с тензорами, полученными из объектов keras.Input. Под капотом слои и веса будут объединены между этими моделями, поэтому пользователь может обучить full_model и использовать backbone или activations для извлечения признаков. Входы и выходы модели также могут быть вложенными структурами тензоров, и созданные модели являются стандартными моделями Functional API, которые поддерживают все существующие API.

Наследование от класса Model

В этом случае, вы должны определить свои слои в __init__() и реализовать прямой проход модели в call().

class MyModel(keras.Model):
    def __init__(self):
        super().__init__()
        self.dense1 = keras.layers.Dense(32, activation="relu")
        self.dense2 = keras.layers.Dense(5, activation="softmax")

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

model = MyModel()

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

class MyModel(keras.Model):
    def __init__(self):
        super().__init__()
        self.dense1 = keras.layers.Dense(32, activation="relu")
        self.dense2 = keras.layers.Dense(5, activation="softmax")
        self.dropout = keras.layers.Dropout(0.5)

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

model = MyModel()

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

С помощью класса Sequential

Кроме того, keras.Sequential является специальным случаем модели, где модель представляет собой просто стопку слоёв с одним входом и одним выходом.

model = keras.Sequential([
    keras.Input(shape=(None, None, 3)),
    keras.layers.Conv2D(filters=32, kernel_size=3),
])
Атрибуты
compiled_metrics
distribute_reduction_method
distribute_strategy
input Извлекает входной(ые) тензор(ы) символической операции.

Возвращает только тензор(ы), соответствующие первому вызову операции.

jit_compile
layers
metrics_names
output Извлекает выходной(ые) тензор(ы) слоя.

Возвращает только тензор(ы), соответствующие первому вызову операции.

run_eagerly

Методы

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) (за исключением случаев с функциями потерь, такими как sparse categorical crossentropy, которые ожидают целочисленные массивы формы (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 Целое число. Количество партий, выполняемых во время каждого вызова одной скомпилированной функции. Выполнение нескольких партий внутри одного вызова скомпилированной функции может значительно повысить производительность на TPUs или в случае небольших моделей с большой накладными расходами на 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 Данные для входных данных. Это может быть:
  • Массив NumPy (или массив-подобный объект), или список массивов (если у модели несколько входных данных).
  • Тензор или список тензоров (если у модели несколько входных данных).
  • Словарь, сопоставляющий имена входных данных соответствующим массивам/тензорам, если у модели есть именованные входные данные.
  • Объект tf.data.Dataset. Должен возвращать кортеж либо (inputs, targets), либо (inputs, targets, sample_weights).
  • Генератор или keras.utils.PyDataset, возвращающий (inputs, targets) или (inputs, targets, sample_weights).
y Данные целевой переменной. Как и входные данные x, это могут быть массивы NumPy или тензоры, нативные для бэкенда. Если x является объектом tf.data.Dataset или keras.utils.PyDataset, y не следует указывать (поскольку целевые значения будут получены из итератора/набора данных).
batch_size Целое число или None. Количество образцов в каждой пачке вычислений. Если не указано, значение batch_size будет по умолчанию равно 32. Не указывайте значение batch_size, если данные представлены в виде набора данных, генераторов или объектов keras.utils.PyDataset (поскольку они генерируют пакеты).
verbose Режим отображения, 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 Данные для ввода. Это может быть:
  • Массив NumPy (или подобный массиву объект), или список массивов (в случае модели с несколькими входами).
  • Тензор, или список тензоров (в случае модели с несколькими входами).
  • Словарь, сопоставляющий имена входов соответствующим массивам/тензорам, если у модели есть именованные входы.
  • A tf.data.Dataset. Должен возвращать кортеж либо (inputs, targets), либо (inputs, targets, sample_weights).
  • A keras.utils.PyDataset возвращающий (inputs, targets) или (inputs, targets, sample_weights).
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.
  • A tf.data.Dataset.
  • Генератор Python или 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 с той же длиной, что и входные образцы (соответствие 1:1 между весами и образцами), или в случае временных данных можно передать двумерный массив с формой (samples, sequence_length), чтобы применить разный вес к каждому временнóму шагу каждого образца. Этот аргумент не поддерживается, когда x является набором данных, генератором или экземпляром keras.utils.PyDataset вместо этого предоставьте sample_weights как третий элемент 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 выполняет проверку каждые 2 эпохи.

    Поведение распаковки для итераторных входов: Общая практика — передавать итератор, такой как tf.data.Dataset или keras.utils.PyDataset в fit(), который, фактически, генерирует не только признаки (x), но также и целевые значения (y) и веса образцов (sample_weight). Keras требует, чтобы выход таких итераторов был однозначным. Итератор должен возвращать кортеж длиной 1, 2 или 3, где необязательные второй и третий элементы будут использоваться для y и sample_weight соответственно. Любой другой тип будет обернут в кортеж длиной один, что фактически будет рассматривать всё как 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, способным создать тот же слой по словарю конфигурации. Он не обрабатывает подключение слоёв (это обрабатывается сетью), ни веса (это обрабатывается 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
    )
    

    predict

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

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

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

    Для небольшого количества входов, которые помещаются в одну партию, используйте непосредственно __call__() для более быстрого выполнения, например, model(x) или model(x, training=False), если у вас есть слои, такие как BatchNormalization, которые ведут себя по-разному во время вывода.

    Примечание: См. эту страницу FAQ для получения более подробной информации о различиях между методами Model predict() и __call__().
    Аргументы
    x Входные образцы. Это может быть:
    • Массив NumPy (или массив-подобный объект), или список массивов (если модель имеет несколько входов).
    • Тензор или список тензоров (если модель имеет несколько входов).
    • Объект tf.data.Dataset.
    • Экземпляр keras.utils.PyDataset.
    batch_size Целое число или None. Количество выборок в пачке. Если не указано, batch_size будет по умолчанию 32. Не указывайте batch_size, если ваши данные в форме наборов данных, генераторов или экземпляров keras.utils.PyDataset (поскольку они генерируют партии).
    verbose Режим отображения, 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 Путь к файлу или объекту. Путь, куда сохранить модель. Должен оканчиваться на .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().

    END_OF_DOCUMENT_MARKER

    Сохраненный .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

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

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

    Аргументы
    x Данные для входных данных. Должно быть подобно массиву.
    y Данные для целевых переменных. Должно быть подобно массиву.
    sample_weight Необязательный массив той же длины, что и x, содержащий весовые коэффициенты, применяемые к функции потерь модели для каждого образца. В случае временных данных вы можете передать 2D массив с формой (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, содержащий весовые коэффициенты, применяемые к функции потерь модели для каждого образца. В случае временных данных вы можете передать 2D массив с формой (samples, sequence_length), чтобы применить различные весовые коэффициенты к каждому временнному шагу каждого образца.
    class_weight Необязательный словарь, сопоставляющий индексы классов (целые числа) с весом (число с плавающей точкой), который применяется к функции потерь модели для образцов данного класса во время обучения. Это может быть полезно, чтобы сообщить модели "уделить больше внимания" образцам из недопредставленного класса. Когда class_weight указан, и целевые переменные имеют ранг 2 или выше, либо y должен быть закодирован в один-в-один, либо для меток классов должен быть включен явный конечный размер 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/Model

    Spec-Zone.ru

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