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

Метод add_weight

Метод add_weight класса Layer создает новую переменную веса и добавляет ее в список весов слоя. Первым параметром метод принимает имя веса. Вторым параметром можно передать форму тензора. Третьим параметром задается тип данных. Также можно указать начальное значение, флаг обучения и регулярізаторы.

Синтаксис

layer.add_weight(name, [shape], [dtype], [initializer], [trainable])

Пример

Давайте создадим простой слой и добавим в него вес с именем 'my_weight' и формой (3,):

import tensorflow as tf class MyLayer(tf.keras.layers.Layer): def __init__(self): super(MyLayer, self).__init__() self.w = self.add_weight(name='my_weight', shape=(3,)) layer = MyLayer() print(layer.w)

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

<tf.Variable 'my_weight:0' shape=(3,) dtype=float32, numpy=array([-0.04089421, 0.03652837, -0.04684317], dtype=float32)>

Пример

Давайте добавим вес с начальным значением из тензора:

import tensorflow as tf class MyLayer(tf.keras.layers.Layer): def __init__(self): super(MyLayer, self).__init__() initial = tf.constant([1.0, 2.0, 3.0]) self.w = self.add_weight( name='my_weight', shape=(3,), initializer=tf.keras.initializers.Constant(initial) ) layer = MyLayer() print(layer.w)

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

<tf.Variable 'my_weight:0' shape=(3,) dtype=float32, numpy=array([1., 2., 3.], dtype=float32)>

Пример

Давайте создадим вес, который не будет обучаться:

import tensorflow as tf class MyLayer(tf.keras.layers.Layer): def __init__(self): super(MyLayer, self).__init__() self.w = self.add_weight( name='my_weight', shape=(3,), trainable=False ) layer = MyLayer() print(layer.trainable_weights) print(layer.non_trainable_weights)

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

[] [<tf.Variable 'my_weight:0' shape=(3,) dtype=float32, numpy=array([-0.04089421, 0.03652837, -0.04684317], dtype=float32)>]

Пример

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

<+python+> import tensorflow as tf class MyLayer(tf.keras.layers.Layer): def build(self, input_shape): self.w = self.add_weight( name='my_weight', shape=(input_shape[-1],) ) layer = MyLayer() layer.build((None, 5)) print(layer.w) <-python+>

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

<tf.Variable 'my_weight:0' shape=(5,) dtype=float32, numpy=array([-0.04089421, 0.03652837, -0.04684317, 0.03652837, -0.04684317], dtype=float32)>

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

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