tf.keras.experimental.LinearModel
| Просмотреть исходный код на GitHub |
Линейная модель для задач регрессии и классификации.
Наследуется от: Model, Layer, Module
tf.keras.experimental.LinearModel(
units=1, activation=None, use_bias=True, kernel_initializer='zeros',
bias_initializer='zeros', kernel_regularizer=None,
bias_regularizer=None, **kwargs
)
Эта модель аппроксимирует следующую функцию:
где
является смещением, а
является весом для каждого признака.
Пример:
model = LinearModel() model.compile(optimizer='sgd', loss='mse') model.fit(x, y, epochs=epochs)
Эта модель также принимает разреженные числовые входные данные:
Пример:
model = LinearModel() opt = tf.keras.optimizers.Adam() loss_fn = tf.keras.losses.MeanSquaredError() with tf.GradientTape() as tape: output = model(sparse_input) loss = tf.reduce_mean(loss_fn(target, output)) grads = tape.gradient(loss, model.weights) opt.apply_gradients(zip(grads, model.weights))
| Аргументы | |
|---|---|
units | Положительное целое число, размерность выхода без размера пакета. |
activation | Функция активации для использования. Если ничего не указано, активация не применяется. |
use_bias | нужно ли вычислять смещение/перехват для этой модели. Если установлено в False, смещение/перехват не будет использоваться в расчётах, например, если данные уже центрированы. |
kernel_initializer | Инициализатор для матриц весов kernel. |
bias_initializer | Инициализатор для вектора смещения. |
kernel_regularizer | Регуляризатор для векторов ядра. |
bias_regularizer | Регуляризатор для вектора смещения. |
**kwargs | Параметры, которые передаются в BaseLayer.init. |
| Атрибуты | |
|---|---|
distribute_strategy | tf.distribute.Strategy, в котором была создана эта модель. |
layers | |
metrics_names | Возвращает метки отображения модели для всех выходов. Примечание: inputs = tf.keras.layers.Input(shape=(3,)) outputs = tf.keras.layers.Dense(2)(inputs) model = tf.keras.models.Model(inputs=inputs, outputs=outputs) model.compile(optimizer="Adam", loss="mse", metrics=["mae"]) model.metrics_names [] x = np.random.random((2, 3)) y = np.random.randint(0, 2, (2, 2)) model.fit(x, y) model.metrics_names ['loss', 'mae'] inputs = tf.keras.layers.Input(shape=(3,)) d = tf.keras.layers.Dense(2, name='out') output_1 = d(inputs) output_2 = d(inputs) model = tf.keras.models.Model( inputs=inputs, outputs=[output_1, output_2]) model.compile(optimizer="Adam", loss="mse", metrics=["mae", "acc"]) model.fit(x, (y, y)) model.metrics_names ['loss', 'out_loss', 'out_1_loss', 'out_mae', 'out_acc', 'out_1_mae', 'out_1_acc'] |
run_eagerly | Устанавливаемый атрибут, указывающий, должна ли модель выполняться в режиме eager. Выполнение в режиме eager означает, что ваша модель будет выполняться пошагово, как Python-код. Ваша модель может работать медленнее, но это должно облегчить отладку, позволяя пошагово выполнять вызовы отдельных слоёв. По умолчанию мы попытаемся скомпилировать вашу модель в статическую граф, чтобы обеспечить лучшую производительность. |
Методы
compile
compile(
optimizer='rmsprop', loss=None, metrics=None, loss_weights=None,
weighted_metrics=None, run_eagerly=None, steps_per_execution=None, **kwargs
)
Настраивает модель для обучения.
| Аргументы | |
|---|---|
optimizer | Строка (имя оптимизатора) или экземпляр оптимизатора. См. tf.keras.optimizers. |
loss | Строка (имя функции потерь), функция потерь или экземпляр tf.keras.losses.Loss. См. tf.keras.losses. Функция потерь — это любая вызываемая функция со сигнатурой loss = fn(y_true, y_pred), где y_true = значения целевых данных с формой = [batch_size, d0, .. dN], за исключением разреженных функций потерь, таких как разреженная категориальная кросс-энтропия, где форма = [batch_size, d0, .. dN-1]. y_pred = предсказанные значения с формой = [batch_size, d0, .. dN]. Она возвращает скалярное значение потери с весом. Если используется пользовательский экземпляр Loss, а reduction = NONE, значение возврата имеет форму [размер_пакета, d0, .. dN-1], то есть значения потерь на образец или на шаг; в противном случае это скаляр. Если у модели несколько выходов, вы можете использовать разные функции потерь для каждого выхода, передав словарь или список функций потерь. Значение потери, которое будет минимизироваться моделью, будет тогда суммой всех отдельных потерь. |
metrics | Список метрик, которые будут оцениваться моделью во время обучения и тестирования. Каждая из них может быть строкой (имя встроенной функции), функцией или экземпляром tf.keras.metrics.Metric. См. tf.keras.metrics. Обычно вы будете использовать metrics=['accuracy']. Функция — это любая вызываемая функция со сигнатурой result = fn(y_true, y_pred). Чтобы указать разные метрики для разных выходов многовыходной модели, вы также можете передать словарь, например metrics={'output_a': 'accuracy', 'output_b': ['accuracy', 'mse']}. Вы также можете передать список (длина = длина(выходов)) списков метрик, таких как metrics=[['accuracy'], ['accuracy', 'mse']] или metrics=['accuracy', ['accuracy', 'mse']]. Когда вы передаёте строки 'accuracy' или 'acc', мы преобразуем их в один из tf.keras.metrics.BinaryAccuracy, tf.keras.metrics.CategoricalAccuracy, tf.keras.metrics.SparseCategoricalAccuracy в зависимости от используемой функции потерь и формы выхода модели. Мы делаем аналогичное преобразование для строк 'crossentropy' и 'ce'. |
loss_weights | Необязательный список или словарь, задающий скалярные коэффициенты (вещественные числа Python), чтобы взвесить вклад потерь разных выходов модели. Значение потери, которое будет минимизироваться моделью, будет затем взвешенной суммой всех отдельных потерь, взвешенных коэффициентами loss_weights. Если список, ожидается 1:1 соответствие выходам модели. Если словарь, ожидается соответствие между именами выходов (строки) и скалярными коэффициентами. |
weighted_metrics | Список метрик, которые будут оцениваться и взвешиваться весом по образцу или весом по классам во время обучения и тестирования. |
run_eagerly | Булево значение. По умолчанию False. Если True, логика этого Model не будет обернута в tf.function. Рекомендуется оставить это как None если ваша Model не может быть выполнена внутри tf.function. |
steps_per_execution | Целое число. По умолчанию 1. Количество батчей, выполняемых во время каждого вызова tf.function. Выполнение нескольких батчей внутри одного вызова tf.function может значительно улучшить производительность на TPU или для небольших моделей с большой нагрузкой на Python. Максимально будет выполнена одна полная эпоха за одно выполнение. Если передано число больше размера эпохи, выполнение будет усечено до размера эпохи. Обратите внимание, что если steps_per_execution установлено в N, методы Callback.on_batch_begin и Callback.on_batch_end будут вызываться только через каждые N батчей (то есть до/после каждого вызова tf.function). |
**kwargs | Аргументы, поддерживаемые только для обратной совместимости. |
| Исключения | |
|---|---|
ValueError | В случае некорректных аргументов для optimizer, loss или metrics. |
evaluate
evaluate(
x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None,
callbacks=None, max_queue_size=10, workers=1, use_multiprocessing=False,
return_dict=False
)
Возвращает значение потерь и значения метрик для модели в режиме тестирования.
Вычисление выполняется по батчам (см. аргумент batch_size).
| Аргументы | |
|---|---|
x | Данные для входных данных. Они могут быть:
|
y | Данные целевых значений. Как и входные данные x, они могут быть массивами Numpy или тензорами TensorFlow. Они должны быть согласованы с x (вы не можете иметь входные данные Numpy и целевые тензоры, или наоборот). Если x является набором данных, генератором или экземпляром keras.utils.Sequence, y не нужно указывать (так как целевые значения будут получены из итератора/набора данных). |
batch_size | Целое число или None. Количество образцов в каждой партии вычислений. Если не указано, batch_size по умолчанию будет равно 32. Не указывайте batch_size если ваши данные представлены в виде набора данных, генераторов или экземпляров keras.utils.Sequence (так как они генерируют партии). |
verbose | 0 или 1. Режим отображения. 0 = без вывода, 1 = прогресс-бар. |
sample_weight | Необязательный массив Numpy весов для тестовых образцов, используемых для взвешивания функции потерь. Вы можете передать плоский (одномерный) массив Numpy той же длины, что и входные образцы (1:1 соответствие между весами и образцами), или в случае временных данных, вы можете передать двумерный массив с формой (samples, sequence_length), чтобы применить разные веса к каждому шагу времени каждого образца. Этот аргумент не поддерживается, когда x является набором данных, вместо этого передайте веса образцов как третий элемент x. |
steps | Целое число или None. Общее количество шагов (парт образцов) до завершения этапа оценки. Игнорируется по умолчанию, с значением None. Если x является набором данных tf.data и steps равно None, 'evaluate' будет выполняться до тех пор, пока набор данных не будет исчерпан. Этот аргумент не поддерживается с входными данными в виде массивов. |
callbacks | Список экземпляров keras.callbacks.Callback. Список колбеков, применяемых во время оценки. См. callbacks. |
max_queue_size | Целое число. Только для входных данных генератора или keras.utils.Sequence. Максимальный размер очереди генератора. Если не указано, max_queue_size по умолчанию будет равно 10. |
workers | Целое число. Только для входных данных генератора или keras.utils.Sequence. Максимальное количество процессов, которые можно запустить при использовании многопотоковости на основе процессов. Если не указано, workers по умолчанию будет равно 1. Если 0, генератор будет выполняться в основном потоке. |
use_multiprocessing | Булево значение. Только для входных данных генератора или keras.utils.Sequence. Если True, использовать многопотоковость на основе процессов. Если не указано, use_multiprocessing по умолчанию будет равно False. Обратите внимание, что поскольку эта реализация использует multiprocessing, вы не должны передавать несериализуемые аргументы в генератор, так как они не могут быть легко переданы дочерним процессам. |
return_dict | Если True, результаты потерь и метрик возвращаются в виде словаря, где каждый ключ — имя метрики. Если False, они возвращаются в виде списка. |
См. обсуждение Unpacking behavior for iterator-like inputs для Model.fit.
| Возвращаемое значение | |
|---|---|
Скалярная потеря на тесте (если у модели один выход и нет метрик) или список скаляров (если у модели несколько выходов и/или метрик). Атрибут model.metrics_names предоставляет метки отображения для скалярных выходов. |
| Исключения | |
|---|---|
RuntimeError | Если model.evaluate заключен в tf.function. |
ValueError | в случае неверных аргументов. |
evaluate_generator
evaluate_generator(
generator, steps=None, callbacks=None, max_queue_size=10, workers=1,
use_multiprocessing=False, verbose=0
)
Оценивает модель с помощью генератора данных.
УСТАРЕВШЕЕ:
Model.evaluate теперь поддерживает генераторы, поэтому использование этого метода больше не требуется.
fit
fit(
x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None,
validation_split=0.0, validation_data=None, shuffle=True, class_weight=None,
sample_weight=None, initial_epoch=0, steps_per_epoch=None,
validation_steps=None, validation_batch_size=None, validation_freq=1,
max_queue_size=10, workers=1, use_multiprocessing=False
)
Обучает модель для фиксированного числа эпох (итераций по набору данных).
| Аргументы | |
|---|---|
x | Данные ввода. Это может быть:
|
y | Данные цели. Как и данные ввода x, это могут быть массивы Numpy или тензоры TensorFlow. Они должны быть согласованы с x (вы не можете иметь массивы Numpy в качестве ввода и тензоры в качестве целей, или наоборот). Если x является набором данных, генератором или экземпляром keras.utils.Sequence, то y не следует указывать (поскольку цели будут получены из x). |
batch_size | Целое число или None. Количество образцов на обновление градиента. Если не указано, batch_size будет по умолчанию 32. Не указывайте batch_size если ваши данные представлены в виде наборов данных, генераторов или экземпляров keras.utils.Sequence (так как они генерируют пакеты). |
epochs | Целое число. Количество эпох для обучения модели. Эпоха — это итерация по всем x и y данным, предоставленным. Обратите внимание, что в сочетании с initial_epoch, epochs следует понимать как "конечную эпоху". Модель не обучается за количество итераций, указанное в epochs, а только до достижения эпохи с индексом epochs. |
verbose | 0, 1 или 2. Режим отображения. 0 = без вывода, 1 = полоса прогресса, 2 = по одной строке за эпоху. Обратите внимание, что полоса прогресса не особенно полезна, когда вывод направлен в файл, поэтому verbose=2 рекомендуется при отсутствии интерактивного режима (например, в производственной среде). |
callbacks | Список экземпляров keras.callbacks.Callback. Список колбеков для применения во время обучения. См. tf.keras.callbacks. Обратите внимание, что колбеки tf.keras.callbacks.ProgbarLogger и tf.keras.callbacks.History создаются автоматически и не нужно передавать их в model.fit. tf.keras.callbacks.ProgbarLogger создается или нет в зависимости от аргумента verbose к model.fit. |
validation_split | Вещественное число от 0 до 1. Доля обучающих данных, используемая как проверочные данные. Модель выделит эту долю обучающих данных, не будет обучаться на ней и будет оценивать потерю и любые метрики модели на этих данных в конце каждой эпохи. Проверочные данные выбираются из последних образцов в x и y данных, предоставленных, до перемешивания. Этот аргумент не поддерживается, когда x является набором данных, генератором или экземпляром keras.utils.Sequence. |
validation_data | Данные, на которых будет оцениваться потеря и любые метрики модели в конце каждой эпохи. Модель не будет обучаться на этих данных. Таким образом, обратите внимание на то, что проверочная потеря данных, предоставленных с помощью validation_split или validation_data , не зависит от регуляризационных слоев, таких как шум и дропаут. validation_data переопределит validation_split. validation_data может быть: (x_val, y_val) массивов Numpy или тензоров(x_val, y_val, val_sample_weights) массивов Numpybatch_size должен быть предоставлен. Для последнего случая, validation_steps может быть предоставлен. Обратите внимание, что validation_data не поддерживает все типы данных, которые поддерживаются в x, например, словарь, генератор или keras.utils.Sequence. |
shuffle | Булево значение (перемешивать ли обучающие данные перед каждой эпохой) или строка ('batch'). Этот аргумент игнорируется, когда x является генератором. 'batch' — специальный вариант для работы с ограничениями данных HDF5; он перемешивает данные в блоках размером пакет. Не оказывает никакого эффекта, если steps_per_epoch не None. |
class_weight | Необязательный словарь, сопоставляющий индексы классов (целые числа) с весом (вещественное число), используемый для взвешивания функции потерь (только во время обучения). Это может быть полезно, чтобы сообщить модели "уделять больше внимания" образцам из недопредставленного класса. |
sample_weight | Необязательный массив Numpy весов для обучающих образцов, используемый для взвешивания функции потерь (только во время обучения). Вы можете передать плоский (одномерный) массив Numpy с такой же длиной, как и входные образцы (1:1 соответствие между весами и образцами), или в случае временных данных, вы можете передать двумерный массив с формой (samples, sequence_length), чтобы применить разные веса к каждому шагу времени каждого образца. Этот аргумент не поддерживается, когда x является набором данных, генератором или keras.utils.Sequence экземпляром, вместо этого предоставьте sample_weights как третий элемент x. |
initial_epoch | Целое число. Эпоха, с которой начать обучение (полезно для возобновления предыдущей сессии обучения). |
steps_per_epoch | Целое число или None. Общее количество шагов (пакетов образцов) до объявления завершения одной эпохи и начала следующей. При обучении с помощью входных тензоров, таких как тензоры данных TensorFlow, значение None по умолчанию равно количеству образцов в вашем наборе данных, деленному на размер пакета, или 1, если это невозможно определить. Если x является набором данных tf.data, и 'steps_per_epoch' равно None, эпоха будет продолжаться до истощения входного набора данных. При передаче бесконечно повторяющегося набора данных, необходимо указать аргумент steps_per_epoch. Этот аргумент не поддерживается с входными массивами. |
validation_steps | Актуально только если validation_data предоставлен и является набором данных tf.data. Общее количество шагов (пакетов образцов), которые нужно извлечь, прежде чем остановиться, когда выполняется проверка в конце каждой эпохи. Если 'validation_steps' равно None, проверка будет продолжаться до истощения набора данных validation_data. В случае бесконечно повторяющегося набора данных, это приведёт к бесконечному циклу. Если 'validation_steps' задано и будет использоваться только часть набора данных, оценка будет начинаться с начала набора данных в каждой эпохе. Это гарантирует, что каждый раз будут использованы те же образцы проверки. |
validation_batch_size | Целое число или None. Количество образцов в пакете проверки. Если не указано, будет по умолчанию batch_size. Не указывайте validation_batch_size если ваши данные представлены в виде наборов данных, генераторов или keras.utils.Sequence экземпляров (так как они генерируют пакеты). |
validation_freq | Актуально только если предоставлены данные проверки. Целое число или экземпляр collections_abc.Container (например, список, кортеж и т. д.). Если целое число, указывает сколько эпох обучения должно пройти до выполнения новой проверки, например, validation_freq=2 запускает проверку каждые 2 эпохи. Если контейнер, указывает эпохи, в которые следует выполнить проверку, например, validation_freq=[1, 2, 10] запускает проверку в конце 1-й, 2-й и 10-й эпох. |
max_queue_size | Целое число. Используется только для генератора или keras.utils.Sequence ввода. Максимальный размер очереди генератора. Если не указано, max_queue_size будет по умолчанию 10. |
workers | Целое число. Используется только для генератора или keras.utils.Sequence ввода. Максимальное количество процессов для запуска при использовании многопоточности на основе процессов. Если не указано, workers будет по умолчанию 1. Если 0, генератор будет выполняться на основном потоке. |
use_multiprocessing | Булево значение. Используется только для генератора или keras.utils.Sequence ввода. Если True, используйте многопоточность на основе процессов. Если не указано, use_multiprocessing будет по умолчанию False. Обратите внимание, что из-за того, что эта реализация использует многопроцессорность, вы не должны передавать не сериализуемые аргументы в генератор, так как их трудно передавать дочерним процессам. |
Поведение распаковки для итераторных входов: Общая схема — передача tf.data.Dataset, генератора или tf.keras.utils.Sequence в аргумент x метода fit, что фактически приведет к получению не только признаков (x), но также, необязательно, целей (y) и весов образцов. Keras требует, чтобы вывод таких итераторов был однозначным. Итератор должен возвращать кортеж длины 1, 2 или 3, где необязательные второй и третий элементы будут использоваться для y и sample_weight соответственно. Любой другой тип будет заключён в кортеж длины один, эффективно рассматривая всё как 'x'. При получении словарей, они должны всё ещё придерживаться структуре кортежа верхнего уровня. например, ({"x0": x0, "x1": x1}, y). Keras не будет пытаться разделить признаки, цели и веса из ключей одного словаря. Примечателен тот факт, что тип данных namedtuple не поддерживается. Причина в том, что он ведет себя как упорядоченный тип данных (кортеж) и тип данных сопоставления (словарь). Таким образом, приведён namedtuple формы: namedtuple("example_tuple", ["y", "x"]) неясно, следует ли изменять порядок элементов при интерпретации значения. Ещё хуже — кортеж вида: namedtuple("other_tuple", ["x", "y", "z"]), где неясно, был ли кортеж предназначен для распаковки в x, y и sample_weight или для передачи как единственного элемента в x. В результате код обработки данных просто сгенерирует ValueError, если он встретит namedtuple. (Вместе с инструкциями по устранению проблемы.)
| Возвращаемое значение | |
|---|---|
Объект History. Его атрибут History.history — это запись значений потерь обучения и значений метрик на последовательных эпохах, а также значений потерь проверки и значений метрик проверки (применимо). |
| Исключения | |
|---|---|
RuntimeError |
|
ValueError | В случае несоответствия между предоставленными входными данными и ожиданиями модели или когда входные данные пусты. |
fit_generator
fit_generator(
generator, steps_per_epoch=None, epochs=1, verbose=1, callbacks=None,
validation_data=None, validation_steps=None, validation_freq=1,
class_weight=None, max_queue_size=10, workers=1, use_multiprocessing=False,
shuffle=True, initial_epoch=0
)
Обучает модель на данных, сгенерированных по частям с помощью Python-генератора.
УСТЕРЕШЕНО:
Model.fit теперь поддерживает генераторы, поэтому больше нет необходимости использовать этот метод.
get_layer
get_layer(
name=None, index=None
)
Возвращает слой на основе его имени (уникального) или индекса.
Если name и index оба предоставлены, index будет иметь приоритет. Индексы основаны на порядке горизонтального обхода графа (сверху вниз).
| Аргументы | |
|---|---|
name | Строка, имя слоя. |
index | Целое число, индекс слоя. |
| Возвращаемое значение | |
|---|---|
| Экземпляр слоя. |
| Исключения | |
|---|---|
ValueError | В случае неверного имени или индекса слоя. |
load_weights
load_weights(
filepath, by_name=False, skip_mismatch=False, options=None
)
Загружает все весы слоя, либо из файла весов TensorFlow, либо из файла весов HDF5.
Если by_name равно False, весы загружаются на основе топологии сети. Это означает, что архитектура должна быть такой же, как при сохранении весов. Обратите внимание, что слои, у которых нет весов, не учитываются в топологическом порядке, поэтому добавление или удаление слоев допустимо, если они не имеют весов.
Если by_name равно True, весы загружаются в слои только в том случае, если они имеют одинаковое имя. Это полезно для тонкой настройки или переноса обучения моделей, где некоторые слои изменились.
Только топологическая загрузка (by_name=False) поддерживается при загрузке весов из формата TensorFlow. Обратите внимание, что топологическая загрузка немного отличается между форматами TensorFlow и HDF5 для пользовательских классов, наследуемых от tf.keras.Model: HDF5 загружает на основе сплющенного списка весов, а формат TensorFlow загружает на основе локальных имен объектов, которым присвоены слои в конструкторе Model.
| Аргументы | |
|---|---|
filepath | Строка, путь к файлу весов для загрузки. Для файлов весов в формате TensorFlow это префикс файла (такой же, как был передан в save_weights). |
by_name | Булево значение, указывает, нужно ли загружать весы по имени или в топологическом порядке. Только топологическая загрузка поддерживается для файлов весов в формате TensorFlow. |
skip_mismatch | Булево значение, указывает, нужно ли пропускать загрузку слоев, где есть несоответствие в количестве весов или форме весов (действительно только при by_name=True). |
options | Необязательный объект tf.train.CheckpointOptions, задающий параметры для загрузки весов. |
| Возвращаемое значение | |
|---|---|
При загрузке файла весов в формате TensorFlow возвращает тот же объект состояния, что и tf.train.Checkpoint.restore. При построении графа операции восстановления выполняются автоматически, как только сеть построена (при первом вызове для пользовательских классов, унаследованных от Model, немедленно, если она уже построена). При загрузке весов в формате HDF5 возвращает |
| Исключения | |
|---|---|
ImportError | Если h5py недоступен, и файл весов в формате HDF5. |
ValueError | Если skip_mismatch установлено в True, когда by_name равно False. |
make_predict_function
make_predict_function()
Создает функцию, выполняющую один шаг инференции.
Этот метод можно переопределить, чтобы поддержать пользовательскую логику инференции. Этот метод вызывается Model.predict и Model.predict_on_batch.
Обычно этот метод напрямую управляет параметрами tf.function и tf.distribute.Strategy и делегирует фактическую логику оценки методу Model.predict_step.
Эта функция кэшируется при первом вызове Model.predict или Model.predict_on_batch. Кэш очищается при вызове Model.compile.
| Возвращаемое значение | |
|---|---|
Функция. Функция, созданная этим методом, должна принимать tf.data.Iterator и возвращать выходные данные Model. |
make_test_function
make_test_function()
Создает функцию, выполняющую один шаг оценки.
Этот метод можно переопределить, чтобы поддержать пользовательскую логику оценки. Этот метод вызывается Model.evaluate и Model.test_on_batch.
Обычно этот метод напрямую управляет параметрами tf.function и tf.distribute.Strategy и делегирует фактическую логику оценки методу Model.test_step.
Эта функция кэшируется при первом вызове Model.evaluate или Model.test_on_batch. Кэш очищается при вызове Model.compile.
| Возвращаемое значение | |
|---|---|
Функция. Функция, созданная этим методом, должна принимать tf.data.Iterator и возвращать dict, содержащий значения, которые будут переданы tf.keras.Callbacks.on_test_batch_end. |
make_train_function
make_train_function()
Создает функцию, выполняющую один шаг обучения.
Этот метод можно переопределить, чтобы поддержать пользовательскую логику обучения. Этот метод вызывается Model.fit и Model.train_on_batch.
Обычно этот метод напрямую управляет параметрами tf.function и tf.distribute.Strategy и делегирует фактическую логику обучения методу Model.train_step.
Эта функция кэшируется при первом вызове Model.fit или Model.train_on_batch. Кэш очищается при вызове Model.compile.
| Возвращаемое значение | |
|---|---|
Функция. Функция, созданная этим методом, должна принимать tf.data.Iterator и возвращать dict, содержащий значения, которые будут переданы tf.keras.Callbacks.on_train_batch_end, такие как {'loss': 0.2, 'accuracy': 0.7}. |
predict
predict(
x, batch_size=None, verbose=0, steps=None, callbacks=None, max_queue_size=10,
workers=1, use_multiprocessing=False
)
Генерирует прогнозы на выходе для входных выборок.
Вычисление выполняется по частям. Этот метод разработан для производительности с большими входными данными. Для небольшого количества входных данных, которые помещаются в одну партию, рекомендуется использовать __call__ для более быстрого выполнения, например, model(x), или model(x, training=False) если у вас есть слои, такие как tf.keras.layers.BatchNormalization, которые ведут себя по-разному во время инференции. Также обратите внимание на тот факт, что тестовая потеря не зависит от регуляризующих слоёв, таких как шум и дропаут.
| Аргументы | |
|---|---|
x | Примеры входных данных. Это может быть:
|
batch_size | Целое число или None. Количество примеров в батче. Если не указано, batch_size по умолчанию равно 32. Не указывайте batch_size если ваши данные представлены в виде набора данных, генераторов или экземпляров keras.utils.Sequence (так как они генерируют батчи). |
verbose | Режим отображения, 0 или 1. |
steps | Общее количество шагов (батчей примеров) перед завершением раунда предсказания. Игнорируется по умолчанию, при значении None. Если x является набором данных tf.data и steps равно None, predict будет выполняться до исчерпания входного набора данных. |
callbacks | Список экземпляров keras.callbacks.Callback. Список колбеков, которые нужно применить во время предсказания. См. колбеки. |
max_queue_size | Целое число. Используется только для входных данных типа генератор или keras.utils.Sequence. Максимальный размер очереди генератора. Если не указано, max_queue_size по умолчанию равно 10. |
workers | Целое число. Используется только для входных данных типа генератор или keras.utils.Sequence. Максимальное количество процессов, которые нужно запустить при использовании многопоточности на основе процессов. Если не указано, workers по умолчанию равно 1. Если 0, генератор будет выполняться на основном потоке. |
use_multiprocessing | Булево значение. Используется только для входных данных типа генератор или keras.utils.Sequence. Если True, использовать многопоточность на основе процессов. Если не указано, use_multiprocessing по умолчанию равно False. Обратите внимание, что из-за того, что эта реализация использует многопроцессорность, вы не должны передавать не сериализуемые аргументы в генератор, так как они не могут быть легко переданы дочерним процессам. |
См. обсуждение Unpacking behavior for iterator-like inputs для Model.fit. Обратите внимание, что Model.predict использует те же правила интерпретации, что и Model.fit и Model.evaluate, поэтому входы должны быть однозначными для всех трех методов.
| Возвращаемое значение | |
|---|---|
| Массив(ы) Numpy с предсказаниями. |
| Исключения | |
|---|---|
RuntimeError | Если model.predict обернут в tf.function. |
ValueError | В случае несоответствия между предоставленными входными данными и ожиданиями модели, или в случае, если состоятельная модель получает количество примеров, которое не кратно размеру батча. |
predict_generator
predict_generator(
generator, steps=None, callbacks=None, max_queue_size=10, workers=1,
use_multiprocessing=False, verbose=0
)
Генерирует предсказания для входных примеров из генератора данных.
УСТАРЕЛО:
Model.predict теперь поддерживает генераторы, поэтому больше нет необходимости использовать эту точку входа.
predict_on_batch
predict_on_batch(
x
)
Возвращает предсказания для одного батча примеров.
| Аргументы | |
|---|---|
x | Входные данные. Это может быть: - Массив Numpy (или подобный массиву объект), или список массивов (если у модели несколько входных данных). - Тензор TensorFlow, или список тензоров (если у модели несколько входных данных). |
| Возвращаемое значение | |
|---|---|
| Массив(ы) Numpy с предсказаниями. |
| Исключения | |
|---|---|
RuntimeError | Если model.predict_on_batch обернут в tf.function. |
ValueError | В случае несоответствия между заданным количеством входных данных и ожиданиями модели. |
predict_step
predict_step(
data
)
Логика для одного шага вывода.
Этот метод может быть переопределён для поддержки пользовательской логики вывода. Этот метод вызывается Model.make_predict_function.
Этот метод должен содержать математическую логику для одного шага вывода. Это обычно включает прямой проход.
Подробные параметры того, как выполняется эта логика (например, tf.function и tf.distribute.Strategy параметры), должны быть оставлены Model.make_predict_function, который также может быть переопределён.
| Аргументы | |
|---|---|
data | Вложенная структура Tensorов. |
| Возвращаемое значение | |
|---|---|
Результат одного шага вывода, как правило, результат вызова Model на данных. |
reset_metrics
reset_metrics()
Сбрасывает состояние всех метрик в модели.
Примеры:
inputs = tf.keras.layers.Input(shape=(3,)) outputs = tf.keras.layers.Dense(2)(inputs) model = tf.keras.models.Model(inputs=inputs, outputs=outputs) model.compile(optimizer="Adam", loss="mse", metrics=["mae"])
x = np.random.random((2, 3)) y = np.random.randint(0, 2, (2, 2)) _ = model.fit(x, y, verbose=0) assert all(float(m.result()) for m in model.metrics)
model.reset_metrics() assert all(float(m.result()) == 0 for m in model.metrics)
reset_states
reset_states()
save
save(
filepath, overwrite=True, include_optimizer=True, save_format=None,
signatures=None, options=None, save_traces=True
)
Сохраняет модель в формате TensorFlow SavedModel или в одном файле HDF5.
Подробности см. в tf.keras.models.save_model или в руководстве по сериализации и сохранению Serialization and Saving guide.
| Аргументы | |
|---|---|
filepath | Строка, объект PathLike, путь к файлу SavedModel или H5 для сохранения модели. |
overwrite | Нужно ли молча перезаписывать любой существующий файл в целевом месте, или предоставить пользователю возможность ручного подтверждения. |
include_optimizer | Если True, сохранять состояние оптимизатора вместе с моделью. |
save_format | Либо 'tf' или 'h5', указывает, нужно ли сохранять модель в формате TensorFlow SavedModel или HDF5. По умолчанию 'tf' в TF 2.X и 'h5' в TF 1.X. |
signatures | Подписи для сохранения с SavedModel. Применимо только к формату 'tf'. Подробнее см. аргумент signatures в tf.saved_model.save. |
options | (только для формата SavedModel) Объект tf.saved_model.SaveOptions, который задаёт параметры для сохранения в SavedModel. |
save_traces | (только для формата SavedModel) При включении SavedModel будет хранить следы функций для каждого слоя. Это можно отключить, чтобы сохранять только конфигурации каждого слоя. По умолчанию True. Отключение этого уменьшит время сериализации и размер файла, но требует, чтобы все пользовательские слои/модели реализовывали метод get_config() . |
Пример:
from keras.models import load_model
model.save('my_model.h5') # creates a HDF5 file 'my_model.h5'
del model # deletes the existing model
# returns a compiled model
# identical to the previous one
model = load_model('my_model.h5')
save_weights
save_weights(
filepath, overwrite=True, save_format=None, options=None
)
Сохраняет все веса слоёв.
Сохраняет в формате HDF5 или TensorFlow в зависимости от аргумента save_format.
При сохранении в формате HDF5 файл весов содержит:
-
layer_names(атрибут), список строк (упорядоченные имена слоёв модели). - Для каждого слоя, атрибут
groupс именемlayer.name- Для каждой такой группы слоёв, атрибут группы
weight_names, список строк (упорядоченные имена тензоров весов слоя). - Для каждого веса в слое, набор данных, хранящий значение веса, с именем, соответствующим имени тензора веса.
- Для каждой такой группы слоёв, атрибут группы
При сохранении в формате TensorFlow все объекты, на которые ссылается сеть, сохраняются в том же формате, что и tf.train.Checkpoint, включая любые Layer экземпляры или Optimizer экземпляры, назначенные атрибутам объектов. Для сетей, построенных из входных и выходных данных с использованием tf.keras.Model(inputs, outputs), Layer экземпляры, используемые сетью, отслеживаются/сохраняются автоматически. Для пользовательских классов, наследующих от tf.keras.Model, Layer экземпляры должны быть назначены атрибутам объектов, обычно в конструкторе. Подробности см. в документации tf.train.Checkpoint и tf.keras.Model.
Хотя форматы одинаковы, не смешивайте save_weights и tf.train.Checkpoint. Точки сохранения, сохранённые с помощью Model.save_weights, должны загружаться с помощью Model.load_weights. Точки сохранения, сохранённые с помощью tf.train.Checkpoint.save, должны восстанавливаться с помощью соответствующей tf.train.Checkpoint.restore. Предпочтительнее использовать tf.train.Checkpoint вместо save_weights для точек сохранения при обучении.
Формат TensorFlow сопоставляет объекты и переменные, начиная с корневого объекта, self для save_weights, и жадно сопоставляет имена атрибутов. Для Model.save это Model, а для Checkpoint.save это Checkpoint даже если у Checkpoint есть присоединённая модель. Это означает, что сохранение tf.keras.Model с помощью save_weights и загрузка в tf.train.Checkpoint с присоединённой Model (или наоборот) не будет соответствовать переменным Model. Подробности о формате TensorFlow см. в руководстве по контрольным точкам обучения.
| Arguments | |
|---|---|
filepath | Строка или PathLike, путь к файлу для сохранения весов. При сохранении в формате TensorFlow это префикс, используемый для файлов контрольных точек (генерируется несколько файлов). Обратите внимание, что суффикс '.h5' приводит к сохранению весов в формате HDF5. |
overwrite | Нужно ли молча перезаписывать любой существующий файл в целевом расположении или предоставить пользователю ручную подсказку. |
save_format | Либо 'tf', либо 'h5'. Файл с filepath, оканчивающийся на '.h5' или '.keras', по умолчанию будет использовать HDF5, если save_format равно None. В противном случае None по умолчанию равно 'tf'. |
options | Необязательный объект tf.train.CheckpointOptions, который задаёт параметры для сохранения весов. |
| Raises | |
|---|---|
ImportError | Если h5py недоступен при попытке сохранить в формате HDF5. |
ValueError | При некорректных/неизвестных параметрах формата. |
summary
summary(
line_length=None, positions=None, print_fn=None
)
Выводит строковое описание сети.
| Arguments | |
|---|---|
line_length | Общая длина выводимых строк (например, задайте это для адаптации отображения к различным размерам окон терминала). |
positions | Относительные или абсолютные позиции элементов журнала в каждой строке. Если не указано, по умолчанию [.33, .55, .67, 1.]. |
print_fn | Функция вывода, которую нужно использовать. По умолчанию print. Она будет вызываться для каждой строки сводки. Вы можете задать её в качестве пользовательской функции для захвата строковой сводки. |
| Raises | |
|---|---|
ValueError | если summary() вызывается до построения модели. |
test_on_batch
test_on_batch(
x, y=None, sample_weight=None, reset_metrics=True, return_dict=False
)
Тестирование модели на одной порции выборок.
| Arguments | |
|---|---|
x | Входные данные. Может быть: - Массив NumPy (или массив-подобный объект) или список массивов (в случае модели с несколькими входами). - Тензор TensorFlow или список тензоров (в случае модели с несколькими входами).
|
y | Целевые данные. Как и входные данные x, они могут быть массивами NumPy или тензорами TensorFlow. Они должны быть согласованы с x (вы не можете иметь входные данные NumPy и целевые тензоры или наоборот). |
sample_weight | Необязательный массив той же длины, что и x, содержащий веса, применяемые к потере модели для каждой выборки. В случае временных данных вы можете передать двумерный массив формы (выборки, длина_последовательности), чтобы применить разные веса к каждому шагу времени каждой выборки. |
reset_metrics | Если True, метрики, возвращаемые, будут только для этой порции. Если False, метрики будут накапливаться по всем порциям. |
return_dict | Если True, результаты потерь и метрик возвращаются как словарь, где каждый ключ — имя метрики. Если False, они возвращаются как список. |
| Returns | |
|---|---|
Скалярная потеря теста (если у модели один выход и нет метрик) или список скаляров (если у модели несколько выходов и/или метрик). Атрибут model.metrics_names предоставит вам метки для отображения скалярных выходов. |
| Raises | |
|---|---|
RuntimeError | Если model.test_on_batch обернут в tf.function. |
ValueError | В случае некорректных аргументов пользователя. |
test_step
test_step(
data
)
Логика одного шага оценки.
Этот метод можно переопределить для поддержки пользовательской логики оценки. Этот метод вызывается Model.make_test_function.
Эта функция должна содержать математическую логику для одного шага оценки. Как правило, это включает прямой проход, вычисление потерь и обновления метрик.
Подробности конфигурации как эта логика выполняется (например, tf.function и tf.distribute.Strategy настройки), должны оставаться на усмотрение Model.make_test_function, который также можно переопределить.
| Arguments | |
|---|---|
data | Вложенная структура Tensor. |
| Returns | |
|---|---|
dict, содержащий значения, которые будут переданы в tf.keras.callbacks.CallbackList.on_train_batch_end. Как правило, возвращаются значения метрик Model. |
to_json
to_json(
**kwargs
)
Возвращает строку JSON, содержащую конфигурацию сети.
Для загрузки сети из файла сохранения JSON используйте keras.models.model_from_json(json_string, custom_objects={}).
| Arguments | |
|---|---|
**kwargs | Дополнительные ключевые аргументы, которые нужно передать json.dumps(). |
| Returns | |
|---|---|
| Строка JSON. |
to_yaml
to_yaml(
**kwargs
)
Возвращает yaml-строку, содержащую конфигурацию сети.
Для загрузки сети из файла сохранения YAML используйте keras.models.model_from_yaml(yaml_string, custom_objects={}).
custom_objects должен быть словарем, сопоставляющим имена пользовательских функций потерь/слоёв и т. д. с соответствующими функциями/классами.
| Arguments | |
|---|---|
**kwargs | Дополнительные ключевые аргументы, которые нужно передать yaml.dump(). |
| Returns | |
|---|---|
| Строка YAML. |
| Raises | |
|---|---|
ImportError | если модуль yaml не найден. |
train_on_batch
train_on_batch(
x, y=None, sample_weight=None, class_weight=None, reset_metrics=True,
return_dict=False
)
Выполняет одно обновление градиента на одной порции данных.
| Аргументы | |
|---|---|
x | Данные для ввода. Это может быть:
|
y | Данные целевого значения. Как и входные данные x, они могут быть массивом(ами) NumPy или тензором(ами) TensorFlow. Они должны быть согласованы с x (нельзя использовать входные данные NumPy и целевые тензоры или наоборот). |
sample_weight | Необязательный массив той же длины, что и x, содержащий веса, применяемые к функции потерь модели для каждого образца. В случае временных данных можно передать двумерный массив с формой (образцы, длина_последовательности), чтобы применить различные веса к каждому временнóму шагу каждого образца. |
class_weight | Необязательный словарь, сопоставляющий индексы классов (целые числа) с весом (вещественным числом), применяемым к функции потерь модели для образцов этого класса во время обучения. Это может быть полезно, чтобы сказать модели «обращать больше внимания» на образцы из недопредставленного класса. |
reset_metrics | Если True, возвращаемые метрики будут только для этой партии. Если False, метрики будут накапливаться по партиям. |
return_dict | Если True, результаты потерь и метрик возвращаются в виде словаря, где каждый ключ — имя метрики. Если False, они возвращаются в виде списка. |
| Возвращаемое значение | |
|---|---|
Скалярная потеря обучения (если у модели один выход и нет метрик) или список скаляров (если у модели несколько выходов и/или метрик). Атрибут model.metrics_names предоставит вам метки отображения для скалярных выходов. |
| Исключения | |
|---|---|
RuntimeError | Если model.train_on_batch обернут в tf.function. |
ValueError | В случае некорректных аргументов пользователя. |
train_step
train_step(
data
)
Логика для одного шага обучения.
Этот метод можно переопределить, чтобы поддержать пользовательскую логику обучения. Этот метод вызывается Model.make_train_function.
Этот метод должен содержать математическую логику для одного шага обучения. Обычно это включает прямой проход, вычисление потерь, обратное распространение и обновление метрик.
Детали конфигурации того, как выполняется эта логика (например, tf.function и tf.distribute.Strategy настройки), следует оставлять Model.make_train_function, который также можно переопределить.
| Аргументы | |
|---|---|
data | Вложенная структура Tensor. |
| Возвращаемое значение | |
|---|---|
Объект dict, содержащий значения, которые будут переданы tf.keras.callbacks.CallbackList.on_train_batch_end. Обычно возвращаются значения метрик Model. Пример: {'loss': 0.2, 'accuracy': 0.7}. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/keras/experimental/LinearModel