tf.keras.Model
Модель, группирующая слои в объект с функциями обучения/вывода.
Наследуется от: Layer, Operation
tf.keras.Model(
*args, **kwargs
)
Используется в блокнотах
| Используется в руководстве | Используется в учебниках |
|---|---|
Существует три способа создания экземпляра 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 | Данные для входных данных. Это может быть:
|
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 | Данные для ввода. Это может быть:
|
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 с той же длиной, что и входные образцы (соответствие 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 для получения более подробной информации о различиях между методамиModelpredict()и__call__().
| Аргументы | |
|---|---|
x | Входные образцы. Это может быть:
|
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().
Сохраненный .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