#tensorflow #keras #deep-learning #tensorflow2.0
#tensorflow #keras #глубокое обучение #tensorflow2.0
Вопрос:
У меня вопрос о создании глубокой нейронной сети с частично загружаемыми весами.
Предположим, я создаю модель следующим образом (предположим, что для модели указана последовательность слоев):
model = models.Model(inputs, x, name=model_name)
И затем я загружаю веса для модели.
model.load_weights(weights)
Что я хочу сделать дальше, так это добавить дополнительные слои в модель глубокой сети, которую я только что создал, инициализируя соответствующие веса случайными значениями.
Я не уверен, как правильно это сделать, не могли бы вы помочь мне с этим?
Ответ №1:
Допустим, у вас есть модель, загруженная с предварительно подготовленными весами
model.load_weights(weights)
#Set trainable to false to maintain the previous weights
for layer in model.layers:
layer.trainable = False
Ниже вы увидите несколько примеров, но обязательно обратитесь к https://www.tensorflow.org/api_docs/python/tf/keras/initializers для всех типов инициализаторов.
Последовательный способ моделирования
initializer_1 = tf.keras.initializers.HeNormal()
dense_1 = model.add(Dense(512,activation='relu',kernel_initializer = initializer_1))
initializer_2 = tf.keras.initializers.GlorotUniform()
model.add(Dense(256,activation = 'relu',kernel_initializer = initializer_2))
Способ функциональной модели
initializer_1 = tf.keras.initializers.HeNormal()
dense_1 = Dense(512,activation='relu',kernel_initializer = initializer_1)(model.output)
initializer_2 = tf.keras.initializers.GlorotUniform()
dense_2 = Dense(256,activation = 'relu',kernel_initializer = initializer_2)(dense_1)
По умолчанию вновь добавленные обучаемые, поэтому вам не нужно беспокоиться о настройке trainable
свойства.