我想以下面提到的方式在Tensorflow中连接两个连续的层。
假设我的第一个模型(model 1
)如下所示:
from tensorflow.keras import layers, models, Sequential
from tensorflow.keras.layers import concatenate, Add, Dense
models.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
layers.MaxPooling2D((2, 2))
])
我的第二个模型(model 2
)如下所示:
model2 = models.Sequential([
layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu')
])
我想连接model1
和model2
以获得下面的层排列。
_________________________________________________________________
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_1 (Conv2D) (None, 30, 30, 32) 896
max_pooling2d_1 (MaxPoolin (None, 15, 15, 32) 0
g2D)
conv2d_2 (Conv2D) (None, 13, 13, 64) 18496
max_pooling2d_2 (MaxPoolin (None, 6, 6, 64) 0
g2D)
conv2d_3 (Conv2D) (None, 4, 4, 64) 36928
=================================================================
Total params: 56,320
Trainable params: 56,320
Non-trainable params: 0
_________________________________________________________________
目前,我使用下面的代码来完成这个任务(运行良好)。但是,我想知道是否有比下面提到的for循环更优雅的解决方案。
for i in range( len( model2.layers ) ):
model1.add(model2.layers[i])
**在Tensorflow中以上述所需方式连接model1
和model2
的最佳方法是什么?**这里,model1
和model2
只是随机挑选的两个示例。我希望该解决方案也适用于任何其他两个兼容的模型。
我试过使用tensorflow.keras.layers.Concatenate和merging of layers in Keras,但是我无法让它们工作。我也试过使用Stackoverflow中的this、this和this问题和解答。但是,我无法让它们为我工作。
1条答案
按热度按时间xn1cxnb41#
Model
类继承了Layer
。这意味着任何模型都可以用作一个层。Sequential
采用一系列层。因此,您可以注意:当你这样做时,
combined_model.summary()
只会显示两个层,即它所包含的两个连续模型。如果你还想看到“子层”,你可以使用combined_model.summary(expand_nested=True)
。