Атрибут 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
включает оба типа переменных:
Результат выполнения кода:
2
variable (3,) True
variable (3,) False
Смотрите также
-
класс
Layer,
который является базовым классом всех слоев -
атрибут
trainable_weights,
который возвращает только обучаемые веса слоя -
атрибут
non_trainable_weights,
который возвращает только необучаемые веса слоя -
метод
get_weights,
который возвращает значения весов в виде массива NumPy