我有一个关于创建部分负载权重的深度神经网络的问题。
假设我按如下方式构造模型(假设为模型指定了一系列的层):
model = models.Model(inputs, x, name=model_name)
然后,我加载模型的权重。
model.load_weights(weights)
接下来我要做的是在我刚刚创建的深度网络模型中添加其他层,并将相应的权重初始化为随机值。
我不确定执行此操作的正确方法是什么,那么您可以帮我吗?
答案 0 :(得分:0)
假设您的模型已加载了预训练的权重
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
属性。