我想在另一个新模型中复制给定模型的某些层(及其所有属性,如跨度,填充等)。我想保留权重和属性,但不保留链接到旧模型的inbound_node / outbound_node属性。
答案 0 :(得分:0)
我认为Keras中没有任何函数可以执行此操作,但是使用Keras Layers的get_config
,get_weights()
和set_weights()
方法非常简单。
new_fresh_layer = layer.__class__(**layer.get_config())
old_layer_weights = layer.get_weights()
x = new_fresh_layer(layer_inputs)
new_fresh_layer.set_weights(old_layer_weights)
if在向模型中顺序添加图层时也可以使用:
model1 = Sequential()
old_layer = Dense(10, input_shape=(10,))
model1.add(old_layer)
model2 = Sequential()
new_layer = old_layer.__class__(**old_layer.get_config())
model2.add(new_layer)
new_layer.set_weights(old_layer.get_weights())
assert (new_layer.get_weights()[0] == old_layer.get_weights()[0]).all()
assert (new_layer.get_weights()[1] == old_layer.get_weights()[1]).all()