You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TensorFlow中堆叠两个模型以创建新的深度学习模型?

两种实现方案如下

方案1:直接堆叠单卷积层与model_1

对应第一种代码需求,无需单独将卷积层封装为模型,直接用Keras函数式API拼接即可,代码示例:

import tensorflow as tf
from tensorflow.keras.layers import Input, Conv2D

input_shape = (480, 800, 3)
conv_layer = Conv2D(filters=3, kernel_size=5, strides=(1, 1), padding="same")
# 实例化model_1,可根据需求调整weights、include_top等参数
model_1 = tf.keras.applications.MobileNetV3Small(input_shape=input_shape, weights=None, include_top=True)

# 拼接生成model_2
inputs = Input(shape=input_shape)
x = conv_layer(inputs)
outputs = model_1(x)
model_2 = tf.keras.Model(inputs=inputs, outputs=outputs)

方案2:堆叠两个已封装的独立模型

对应已单独构建了conv_model和model_1的场景,直接将两个模型作为层调用拼接即可,代码示例:

import tensorflow as tf
from tensorflow.keras.layers import Input, Conv2D
from tensorflow.keras.models import Sequential

input_shape = (480, 800, 3)
# 已定义的卷积小模型
conv_model = Sequential([
               Input(shape=input_shape),
               Conv2D(filters=3, kernel_size=5, strides=(1, 1), padding="same")
             ])
# 已定义的MobileNetV3模型
model_1 = tf.keras.applications.MobileNetV3Small(input_shape=input_shape, weights=None, include_top=True)

# 拼接生成model_2
inputs = Input(shape=input_shape)
x = conv_model(inputs)
outputs = model_1(x)
model_2 = tf.keras.Model(inputs=inputs, outputs=outputs)

注意事项

  • 若需要使用MobileNetV3的预训练权重,实例化model_1时添加参数weights='imagenet'即可
  • 若需要冻结model_1的预训练权重不参与训练,可添加代码model_1.trainable = False
  • 完成拼接后可调用model_2.summary()查看网络结构,确认输入输出尺寸符合预期

内容的提问来源于stack exchange,提问作者Swaroop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:06:08