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__() слоем и предоставляет форму(ы) входных данных, которая(ые) могут быть неизвестны на этапе инициализации.

Слои можно рекурсивно комбинировать: если вы назначите экземпляр слоя как атрибут другого слоя, внешний слой будет отслеживать веса, созданные внутренним слоем. Вложенные слои должны быть созданы в методе __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 и способен создать тот же слой из словаря конфигурации. Он не обрабатывает соединение слоёв (обрабатывается сетью) и веса (обрабатываются 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