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
  • Введение в модули, слои и модели
  • Основные циклы обучения
  • Прогнозирование временных рядов
  • Загрузка DataFrame pandas
  • Обучение с сервером параметров и 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) (за исключением разреженных функций потерь, например разреженной категориальной перекрестной энтропии, для которой требуются целочисленные массивы формы (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 Входные данные. Это могут быть:
  • Массив 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 "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 Входные данные. Это могут быть:
  • Массив NumPy (или объект, подобный массиву) либо список массивов (если у модели несколько входов).
  • Тензор или список тензоров (если у модели несколько входов).
  • Словарь, сопоставляющий имена входов соответствующим массивам/тензорам, если у модели есть именованные входы.
  • tf.data.Dataset. Должен возвращать кортеж, содержащий либо (inputs, targets), либо (inputs, targets, sample_weights).
  • 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.
  • 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 той же длины, что и входные образцы (соответствие весов образцам один к одному) или, в случае временных данных, двумерный массив формы (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 эпохи.

    Распаковка входных данных, похожих на итераторы: часто в fit() передают объект, похожий на итератор, например tf.data.Dataset или keras.utils.PyDataset, который возвращает не только признаки (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
    )
    

    predict

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

    predict(
        x, batch_size=None, verbose='auto', steps=None, callbacks=None
    )
    

    Формирует прогнозы для входных образцов.

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

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

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

    Spec-Zone.ru

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