Spec-Zone.ru › TensorFlow

tf.keras.layers.InputLayer

Это класс, от которого наследуются все слои.

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

tf.keras.layers.InputLayer(
    shape=None,
    batch_size=None,
    dtype=None,
    sparse=None,
    batch_shape=None,
    input_tensor=None,
    name=None,
    **kwargs
)

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

Используется в руководстве Используется в учебных материалах
  • Разреживание для вывода на устройстве с XNNPACK
  • Свёрточный вариационный автокодировщик
  • Обучение на нескольких рабочих узлах с Keras
  • Динамическое квантование диапазона после обучения
  • Повторное обучение классификатора изображений
  • Федеративное обучение для классификации изображений

Слой — это вызываемый объект, который принимает на вход один или несколько тензоров и возвращает один или несколько тензоров. Он выполняет вычисления, определённые в методе call(), и имеет состояние (переменные весов). Состояние можно создать:

  • в __init__(), например, с помощью self.add_weight();
  • в необязательном методе build(), который вызывается при первом __call__() слоя и получает форму входных данных, которая могла быть неизвестна во время инициализации.

Слои можно рекурсивно компоновать: если назначить экземпляр Layer атрибутом другого Layer, внешний слой начнёт отслеживать веса, созданные внутренним слоем. Вложенные слои следует создавать в методе __init__() или build().

Пользователю достаточно создать экземпляр слоя и затем вызывать его как функцию.

Аргументы
trainable Логическое значение, определяющее, должны ли переменные слоя обучаться.
name Строковое имя слоя.
dtype Тип данных для вычислений и весов слоя. Также может быть объектом keras.DTypePolicy, который позволяет использовать разные типы данных для вычислений и весов. По умолчанию — None. None означает использование keras.config.dtype_policy(), то есть политики float32, если не задано другое значение (с помощью keras.config.set_dtype_policy()).

Рекомендуется, чтобы потомки Layer реализовывали следующие методы:

  • __init__(): определяет пользовательские атрибуты слоя и создаёт веса слоя, не зависящие от формы входных данных, с помощью add_weight() или другого состояния.
  • build(self, input_shape): этот метод можно использовать для создания весов, зависящих от формы входных данных, с помощью add_weight() или другого состояния. __call__() автоматически создаёт слой (если он ещё не был создан), вызывая build().
  • call(self, *args, **kwargs): вызывается в __call__ после проверки, что был вызван build(). call() выполняет логику применения слоя к входным аргументам. В call() можно дополнительно использовать два зарезервированных именованных аргумента: 1. training (логическое значение, указывающее, выполняется ли вызов в режиме вывода или обучения). 2. mask (логический тензор, кодирующий замаскированные временные шаги во входных данных; используется, например, в слоях RNN). Типичная сигнатура этого метода: call(self, inputs); при необходимости пользователь может добавить training и mask.
  • get_config(self): возвращает словарь с конфигурацией, использованной для инициализации этого слоя. Если ключи отличаются от аргументов в __init__(), необходимо также переопределить from_config(self). Этот метод используется при сохранении слоя или модели, содержащей этот слой.

Примеры:

Простой пример: слой с двумя переменными, w и b, который возвращает y = w . x + b. В нём показано, как реализовать build() и call(). Переменные, заданные как атрибуты слоя, отслеживаются как веса слоя (в layer.weights).

class SimpleDense(Layer):
    def __init__(self, units=32):
        super().__init__()
        self.units = units

    # Create the state of the layer (weights)
    def build(self, input_shape):
        self.kernel = self.add_weight(
            shape=(input_shape[-1], self.units),
            initializer="glorot_uniform",
            trainable=True,
            name="kernel",
        )
        self.bias = self.add_weight(
            shape=(self.units,),
            initializer="zeros",
            trainable=True,
            name="bias",
        )

    # Defines the computation
    def call(self, inputs):
        return ops.matmul(inputs, self.kernel) + self.bias

# Instantiates the layer.
linear_layer = SimpleDense(4)

# This will also call `build(input_shape)` and create the weights.
y = linear_layer(ops.ones((2, 2)))
assert len(linear_layer.weights) == 2

# These weights are trainable, so they're listed in `trainable_weights`:
assert len(linear_layer.trainable_weights) == 2

Помимо обучаемых весов, обновляемых обратным распространением ошибки во время обучения, у слоёв могут быть и необучаемые веса. Предполагается, что эти веса обновляются вручную во время call(). Ниже приведён пример слоя, вычисляющего текущую сумму входных данных:

class ComputeSum(Layer):

  def __init__(self, input_dim):
      super(ComputeSum, self).__init__()
      # Create a non-trainable weight.
      self.total = self.add_weight(
        shape=(),
        initializer="zeros",
        trainable=False,
        name="total",
      )

  def call(self, inputs):
      self.total.assign(self.total + ops.sum(inputs))
      return self.total

my_sum = ComputeSum(2)
x = ops.ones((2, 2))
y = my_sum(x)

assert my_sum.weights == [my_sum.total]
assert my_sum.non_trainable_weights == [my_sum.total]
assert my_sum.trainable_weights == []
Атрибуты
name Имя слоя (строка).
dtype Тип данных весов слоя. Псевдоним для layer.variable_dtype.
variable_dtype Тип данных весов слоя.
compute_dtype Тип данных для вычислений слоя. Слои автоматически приводят входные данные к этому типу, поэтому вычисления и выходные данные также будут иметь этот тип. При использовании смешанной точности с объектом keras.DTypePolicy это значение будет отличаться от variable_dtype.
trainable_weights Список переменных, включаемых в обратное распространение ошибки.
non_trainable_weights Список переменных, которые не следует включать в обратное распространение ошибки.
weights Объединённый список trainable_weights и non_trainable_weights (в этом порядке).
trainable Следует ли обучать слой (логическое значение), то есть должны ли его потенциально обучаемые веса возвращаться в составе layer.trainable_weights.
input_spec Необязательный объект (или список объектов) InputSpec, задающий ограничения на входные данные, которые может принимать слой.
input Получает входные тензоры символической операции.

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

output Получает выходные тензоры слоя.

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

Методы

from_config

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

@classmethod
from_config(
    config
)

Создаёт слой на основе его конфигурации.

Этот метод является обратным к get_config и позволяет создать тот же слой из словаря конфигурации. Он не обрабатывает связи между слоями (это делает Network) и веса (это делает set_weights).

Аргументы
config Словарь Python, обычно являющийся результатом вызова get_config.
Возвращает
Экземпляр слоя.

symbolic_call

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

symbolic_call(
    *args, **kwargs
)

© 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/layers/InputLayer

Spec-Zone.ru

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