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



这是我的代码,以便将resnet50模型与此模型连接起来(我想在我的数据集上进行训练(。我想在代码中冻结 resnet50 模型的层(参见 Trainable=false(。 在这里我正在导入 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')
``

在这里我创建我的模型

```
# 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 )
```

最后一行不起作用,我有这个错误:图层 conv2_block1_3_conv 的输入 0 与图层不兼容:输入形状的预期轴 -1 的值为 64,但收到的输入具有形状 [无、38、38、256

谢谢你的帮助。

你也可以使用 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)

另请参阅此问题。

最新更新