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

Атрибут weights

Атрибут weights класса Layer возвращает список, содержащий все весовые переменные слоя. В этот список входят как обучаемые веса (например, ядра и смещения), так и необучаемые веса (например, статистики слоев нормализации). Атрибут доступен только после того, как слой был построен, то есть после первого вызова слоя на данных или после явного вызова метода build. Порядок элементов в списке соответствует порядку создания переменных внутри слоя.

Синтаксис

layer.weights

Пример

Давайте создадим полносвязный слой Dense с тремя нейронами и вызовем его на тензоре из пяти признаков. Затем выведем список весов слоя:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.Dense(3) t = tf.constant([[1, 2, 3, 4, 5]]) res = layer(t) print(layer.weights)

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

[<tf.Variable 'dense/kernel:0' shape=(5, 3) dtype=float32, numpy= array([[...]], dtype=float32)>, <tf.Variable 'dense/bias:0' shape=(3,) dtype=float32, numpy=array([0., 0., 0.], dtype=float32)>]

Пример

Давайте выведем количество весов и форму каждого из них для того же слоя:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.Dense(3) t = tf.constant([[1, 2, 3, 4, 5]]) res = layer(t) print(len(layer.weights)) for w in layer.weights: print(w.name, w.shape)

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

2 dense/kernel:0 (5, 3) dense/bias:0 (3,)

Пример

Давайте создадим собственный слой с обучаемым и необучаемым весом, чтобы увидеть, что атрибут weights включает оба типа переменных:

<+python+> import tensorflow as tf tf.random.set_seed(0) class MyLayer(tf.keras.layers.Layer): def __init__(self): super().__init__() self.w = self.add_weight(shape=(3,), trainable=True) self.s = self.add_weight(shape=(3,), trainable=False) def call(self, inputs): return inputs * self.w + self.s layer = MyLayer() t = tf.constant([[1, 2, 3]]) res = layer(t) print(len(layer.weights)) for w in layer.weights: print(w.name, w.trainable) <-python+>

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

2 variable (3,) True variable (3,) False

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

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