Атрибут trainable
Атрибут trainable класса Variable возвращает
булево значение, которое показывает, участвует ли переменная
в обучении модели. Если атрибут равен True, то
оптимизаторы (например, Adam или SGD) будут
обновлять эту переменную при вызове метода apply_gradients
или внутри model.fit. Если False - переменная
замораживается и не изменяется в процессе обучения.
Атрибут доступен только для чтения. Чтобы изменить режим
обучения, используйте метод trainable= при создании
переменной или меняйте свойство через конструктор слоёв.
Чаще всего trainable применяется для тонкой
настройки: вы можете заморозить часть слоёв предобученной
модели, оставив обучаемыми только последние слои.
Синтаксис
v.trainable
Пример
Давайте создадим переменную с режимом обучения по умолчанию и выведем значение атрибута:
import tensorflow as tf
v = tf.Variable([1, 2, 3, 4, 5])
print(v.trainable)
Результат выполнения кода:
True
Пример
Давайте создадим переменную с флагом trainable=False
и проверим атрибут:
import tensorflow as tf
v = tf.Variable([1, 2, 3, 4, 5], trainable=False)
print(v.trainable)
Результат выполнения кода:
False
Пример
Давайте посмотрим, как атрибут работает в слое
Dense. Создадим слой и выведем значения
trainable для его переменных:
import tensorflow as tf
layer = tf.keras.layers.Dense(3)
layer.build((None, 5))
for v in layer.trainable_variables:
print(v.trainable)
Результат выполнения кода:
True
True
Пример
Давайте заморозим слой, установив trainable=False,
и проверим, что переменные перестали быть обучаемыми:
import tensorflow as tf
layer = tf.keras.layers.Dense(3)
layer.build((None, 5))
layer.trainable = False
print(layer.trainable_variables)
Результат выполнения кода:
[]
Смотрите также
-
класс
Variable,
который создает изменяемый тензор -
метод
assign,
который присваивает переменной новое значение -
метод
assign_add,
который прибавляет значение к переменной -
атрибут
initial_value,
который хранит начальное значение переменной