keras 连接Tensorflow连续图层

carvr3hs  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(121)

我想以下面提到的方式在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')
])

我想连接model1model2以获得下面的层排列。

_________________________________________________________________
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中以上述所需方式连接model1model2的最佳方法是什么?**这里,model1model2只是随机挑选的两个示例。我希望该解决方案也适用于任何其他两个兼容的模型。

我试过使用tensorflow.keras.layers.Concatenatemerging of layers in Keras,但是我无法让它们工作。我也试过使用Stackoverflow中的thisthisthis问题和解答。但是,我无法让它们为我工作。

xn1cxnb4

xn1cxnb41#

Model类继承了Layer。这意味着任何模型都可以用作一个层。Sequential采用一系列层。因此,您可以

combined_model = tf.keras.Sequential([model1, model2])

注意:当你这样做时,combined_model.summary()只会显示两个层,即它所包含的两个连续模型。如果你还想看到“子层”,你可以使用combined_model.summary(expand_nested=True)

相关问题