РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
255 of 824 menu

Метод build класса Layer

Метод build класса Layer вызывается автоматически при первом вызове слоя с реальными данными. Внутри этого метода слой создает свои веса и другие переменные, используя переданную форму входных данных. Первым параметром метод принимает input_shape - кортеж или TensorShape с размерами входа без учета размера батча. После вызова build атрибут built становится равным True, а созданные веса попадают в список weights. При переопределении метода в собственном слое нужно вызывать super().build(input_shape) в конце.

Синтаксис

Layer.build(input_shape)

Пример

Давайте создадим собственный слой, который переопределяет метод build и создает один вес формы, зависящей от входных данных:

import tensorflow as tf class MyLayer(tf.keras.layers.Layer): def __init__(self, units=3, **kwargs): super().__init__(**kwargs) self.units = units def build(self, input_shape): self.w = self.add_weight( name="kernel", shape=(input_shape[-1], self.units), initializer="glorot_uniform", trainable=True, ) super().build(input_shape) def call(self, inputs): return tf.matmul(inputs, self.w) layer = MyLayer(units=3) t = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32) res = layer(t) print(layer.built) print(res.shape)

Результат выполнения кода:

True (2, 3)

Пример

Давайте вызовем метод build вручную и посмотрим на созданные веса:

<+python+> import tensorflow as tf layer = tf.keras.layers.Dense(4) layer.build((None, 5)) print(layer.built) print(len(layer.weights)) print(layer.weights[0].shape) print(layer.weights[1].shape) <-python+>

Результат выполнения кода:

True 2 (5, 4) (4,)

Смотрите также

  • класс Layer,
    который является базовым классом для всех слоев
  • метод call,
    который определяет прямой проход слоя
  • атрибут built,
    который показывает, созданы ли веса слоя
  • атрибут weights,
    который хранит список весов слоя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить