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

Атрибут weights класса Model

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

Порядок весов в списке соответствует порядку слоёв в модели, а внутри каждого слоя - порядку, в котором веса были созданы. Атрибут weights удобно использовать для инспекции параметров модели, их сохранения или анализа.

Синтаксис

model.weights

Пример

Давайте создадим простую модель с одним полносвязным слоем и выведем её веса:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(3, input_shape=(2,)) ]) model.build() print(model.weights)

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

[<tf.Variable 'dense/kernel:0' shape=(2, 3) dtype=float32, numpy= array([[-0.00359635, -0.8007684 , 0.38394082], [ 1.1484051 , -0.25687748, -0.21029836]], 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) model = tf.keras.Sequential([ tf.keras.layers.Dense(4, input_shape=(3,)), tf.keras.layers.Dense(2) ]) model.build() print("Total weights:", len(model.weights)) for w in model.weights: print(w.name, w.shape)

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

"Total weights: 4" "dense/kernel:0 (3, 4)" "dense/bias:0 (4,)" "dense_1/kernel:0 (4, 2)" "dense_1/bias:0 (2,)"

Пример

Давайте получим значения весов в виде NumPy-массивов с помощью метода numpy:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(3, input_shape=(2,)) ]) model.build() for w in model.weights: print(w.name) print(w.numpy())

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

"dense/kernel:0" [[-0.00359635 -0.8007684 0.38394082] [ 1.1484051 -0.25687748 -0.21029836]] "dense/bias:0" [0. 0. 0.]

Пример

Давайте сравним атрибут weights с атрибутами trainable_weights и non_trainable_weights на модели со слоем нормализации:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(3, input_shape=(2,)), tf.keras.layers.BatchNormalization() ]) model.build() print("All weights:", len(model.weights)) print("Trainable:", len(model.trainable_weights)) print("Non-trainable:", len(model.non_trainable_weights))

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

"All weights: 6" "Trainable: 4" "Non-trainable: 2"

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

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