简体   繁体   English

向 RESNET50 添加层以构建 JOIN CNN 模型

[英]Adding layers to RESNET50 in order to build a JOIN CNN Model

This is my code in order to join resnet50 model with this model (that I want to train on my dataset).这是我的代码,用于将 resnet50 模型与此模型(我想在我的数据集上训练)连接起来。 I want to freeze layers of the resnet50 model ( see Trainable=false) in the code .我想在代码中冻结 resnet50 模型的层(参见 Trainable=false)。 Here I'm importing resnet 50 model我在这里导入 resnet 50 模型

`` 
import tensorflow.keras
import tensorflow as tf
from tensorflow.keras.applications.resnet50 import ResNet50
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.resnet50 import preprocess_input, decode_predictions
resnet50_imagnet_model = tensorflow.keras.applications.resnet.ResNet50(weights = "imagenet", 
                           include_top=False, 
                           input_shape = (150, 150, 3),
                           pooling='max')
  ``

Here I create my model在这里我创建我的模型

 ```
# freeze feature layers and rebuild model
for l in resnet50_imagnet_model.layers:
    l.trainable = False

#construction du model
model5 = [
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(12, activation='softmax')
]

#Jointure des deux modeles
model_using_pre_trained_resnet50 = tf.keras.Sequential(resnet50_imagnet_model.layers + model5 )
 ```

Last line doesn't work and I have this error : Input 0 of layer conv2_block1_3_conv is incompatible with the layer: expected axis -1 of input shape to have value 64 but received input with shape [None, 38, 38, 256最后一行不起作用,我有这个错误:层 conv2_block1_3_conv 的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 64,但收到的输入形状为 [None, 38, 38, 256

Thanks for help .感谢帮助 。

You can also use keras' functional API , like below您还可以使用 keras 的功能 API ,如下所示

    from tensorflow.keras.applications.resnet50 import ResNet50
    import tensorflow as tf

    resnet50_imagenet_model = ResNet50(include_top=False, weights='imagenet', input_shape=(150, 150, 3))

    #Flatten output layer of Resnet
    flattened = tf.keras.layers.Flatten()(resnet50_imagenet_model.output)

    #Fully connected layer 1
    fc1 = tf.keras.layers.Dense(128, activation='relu', name="AddedDense1")(flattened)

    #Fully connected layer, output layer
    fc2 = tf.keras.layers.Dense(12, activation='softmax', name="AddedDense2")(fc1)

    model = tf.keras.models.Model(inputs=resnet50_imagenet_model.input, outputs=fc2)

Also refer this question .另请参阅此问题

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

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