调整ResNet for Cat-Dog

时间:2019-05-30 23:14:48

标签: python tensorflow keras deep-learning conv-neural-network

我正在经典的Cat-Dog Kaggle数据集上学习CNN。我正在尝试实现不同的CNN架构; ResNet在列表上排名第二。

我了解ResNet(特别是ResNet50)是一种功能模型。最后一层如下:

__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to
==================================================================================================
fc1000 (Dense)                  (None, 1000)         2049000     avg_pool[0][0] 

我想将其更改为2输出密集层。当我使用VGG-16进行此操作时,我使用了以下代码:

vgg16_model = Sequential()
for layer in pre_vgg16_model.layers:
    vgg16_model.add(layer)
vgg16_model.layers.pop()
for layer in vgg16_model.layers:
    layer.trainable = False
vgg16_model.add(Dense(2, activation='softmax'))

自然,这在这里不起作用,因为它不是顺序的。 Keras文档似乎表明功能模型以更“裸露的”风格构建,在模型开发时定义和重新定义张量。问题是,如果这样做,我将失去预训练的好处。

对于功能的CNN模型,我如何对最终的密集层执行类似的弹出和替换操作?

0 个答案:

没有答案