如何在keras中递归扩展/解析/展平嵌套模型?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在keras中递归扩展/解析/展平嵌套模型?相关的知识,希望对你有一定的参考价值。
假设我构建了一个这样的嵌套模型:
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)
如何将此递归转换为“平面”模型,不包含任何Model
或Sequential
图层。
由于model_1
和model_2
可能已经提前接受过培训,因此在转化过程中应该保留参数。
答案
我有一个类似的问题,我得到了一个有效的解决方案,但这似乎并不优雅。
基本思想是迭代子模型的各个层,并将它们逐个添加到整个模型,而不是添加整个子模型。
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)
以上是关于如何在keras中递归扩展/解析/展平嵌套模型?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 flatten_json 递归地展平嵌套的 JSON
javascript 通过递归来展平嵌套数组Ex:[1,2,3,[4,5,[7,8,[10,11,[12,13,[[[[[[14]]]]]]]]]] ]]