让我们说我构建了一个这样的嵌套模型:
from keras.models import Sequential, Model
from keras.layers.core import Input, Dense
model_1 = Sequential()
model_1.add(Dense(...))
model_1.add(Dense(...))
input_2 = Input(...)
output_2 = Dense(...)(input_2)
model_2 = Model(inputs=input_2, outputs=output_2)
model = Sequential()
model.add(model_1)
model.add(model_2)
如何将此递归转换为" flat"模型,不包含任何Model
或Sequential
图层。
由于model_1
和model_2
可能已提前接受过培训,因此在转换过程中应保留参数。
答案 0 :(得分:0)
我遇到了类似的问题,并且找到了可行的解决方案,但这似乎并不十分优雅。
基本思想是遍历子模型的各个层并将它们逐个添加到整个模型中,而不是添加整个子模型。
model = Sequential()
for layer1 in model1.layers:
model.add(layer1)
for layer2 in model2.layers:
model.add(layer2)
如果模型已经包含嵌套模型,则可以通过以下方法对其进行迭代:
model_flat = Sequential()
for layer_nested in model.get_layer('nested_model').layers:
model_flat.add(layer_nested)