繁体   English   中英

如何在Keras中的模型开始处添加图层?

[英]How do I add layers at the start of a model in Keras?

我想使用Tensorflow和Keras将新图层添加到预训练模型中。 问题是,这些新图层不是要添加到模型的顶部,而是要在开始时添加。 我想使用预训练网络作为模型的核心,创建一个三连体模型,该模型采用3种不同的输入并给出3种不同的输出。 为此,我需要在模型的开头插入3个新的输入层。

默认路径是仅链接图层和模型,但是此方法将预先训练的模型视为新的图层(当创建具有新输入和预先训练的模型的新模型时,新模型仅包含4层,3个输入层以及整个预训练模型):

input_1 = tf.keras.layers.Input(shape = (224,224,3))
input_2 = tf.keras.layers.Input(shape = (224,224,3))
input_3 = tf.keras.layers.Input(shape = (224,224,3))

output_1 = pre_trained_model(input_1)
output_2 = pre_trained_model(input_2)
output_3 = pre_trained_model(input_3)

new_model = tf.keras.Model([input_1, input_2, input_3], [output_1, output_2, output_3])    

由于pre_trained_model API将pre_trained_model视为一层,因此new_model只有4层。

我知道上面的选项可以正常工作,正如我在许多代码示例中所看到的那样,但是我想知道是否有更好的选择。 我觉得很尴尬,因为最终模型的内部层的访问将被弄乱,更不用说在添加了3个输入层(预训练模型的输入层)之后模型将具有一个额外的输入层的事实仍然完整无缺,完全没有必要)。

不,这不会添加图层,您正在创建一个多输入多输出模型,每个暹罗分支共享权重。 Keras中没有其他API可以执行此操作,因此这是您唯一的选择。

而且,您始终可以通过pre_trained_model变量访问内部模型的pre_trained_model ,因此不会丢失任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM