import pickle
# Create model and train ...
#save the weights for each layer in your model
network_config = {
'layer1': layer1.get_weights(),
'layer2': layer2.get_weights(),
'layer3': layer3.get_weights()
}
with open('network_config.pickle', 'wb') as file:
pickle.dump(network_config, file)
然后,您可以仅加载仍在使用的层的权重。
with open('network_config.pickle', 'rb') as file:
network_config = pickle.load(file)
#build new model that may be missing some layers
layer1.set_weights(network_config['layer1'])
layer3.set_weights(network_config['layer3'])
def apply_regularization(
model: tf.keras.Model,
l
) -> tf.keras.Model:
for layer in model.layers:
if hasattr(layer, "kernel_regularizer"):
if l1_regularization:
## set to 0.0 to remove regularization
layer.kernel_regularizer = tf.keras.regularizers.l1(0.0)
if l2_regularization:
layer.kernel_regularizer = tf.keras.regularizers.l2(0.0)
return model
3条答案
按热度按时间g6ll5ycj1#
使用所需的超参数创建模型,并使用
load_weight()
将参数加载到模型中。62o28rlo2#
而不是将整个模型保存到.h5文件中,您可以以自己的格式单独保存每个层的权重。例如
然后,您可以仅加载仍在使用的层的权重。
jm2pwxwz3#
你可以迭代你预先训练好的keras模型,并尽可能地从每一层中删除kernel_regularizer,就像这样