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

Заморозка слоя в TensorFlow

Если блок уже не нужно подстраивать по данным, у слоя выключают атрибут trainable. Тогда его веса остаются в модели, но не попадают в список обновляемых при спуске.

Сравним две одинаковые по форме схемы: в одной все блоки обучаемы, во второй у скрытого слоя атрибут выключен до соединения с входом. Посчитаем обучаемые параметры через длину списка trainable_weights:

import tensorflow as tf tf.keras.utils.set_random_seed(0) def trainable_count(model): total = 0 for weight in model.trainable_weights: total += int(tf.size(weight)) return total inp = tf.keras.Input(shape=(2,)) core = tf.keras.layers.Dense(3, name="core")( inp ) out = tf.keras.layers.Dense(1)(core) all_train = tf.keras.Model(inp, out) print(trainable_count(all_train)) # выведет 13 inp = tf.keras.Input(shape=(2,)) block = tf.keras.layers.Dense(3, name="core") block.trainable = False mid = block(inp) out = tf.keras.layers.Dense(1)(mid) part_train = tf.keras.Model(inp, out) print(trainable_count(part_train)) # выведет 4

Соберите модель с одним скрытым блоком на 4 нейрона при 2 входах и одним выходом. Выведите число обучаемых параметров.

Постройте такую же схему, но запретите обучение скрытого блока. Снова выведите число обучаемых параметров.

Создайте цепочку из двух полносвязных блоков. У первого выключите обучение до связи с входом и сравните с полностью обучаемым вариантом по числу обновляемых весов.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить