转移学习将我的顶层与预先训练的模型合并后,准确率降至0%

2024-09-28 01:31:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是将顶层附加到一个预先训练过的模型上,比如VGG19,并使用合并后的模型进行一些预测。合并模型的精度为0。需要一点帮助。在

我自己的顶层

from keras.layers import Conv2D, MaxPooling2D, GlobalAveragePooling2D
from keras.layers import Dropout, Flatten, Dense
from keras.models import Sequential

vgg19top_model = Sequential()
vgg19top_model.add(GlobalAveragePooling2D(input_shape=train_vgg19.shape[1:]))  # shape=(7, 7, 512)
vgg19top_model.add(Dense(255, activation='relu'))
vgg19top_model.add(Dropout(0.35))
vgg19top_model.add(Dense(133, activation='softmax'))
vgg19top_model.summary()

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
global_average_pooling2d_1 ( (None, 512)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 255)               130815    
_________________________________________________________________
dropout_1 (Dropout)          (None, 255)               0         
_________________________________________________________________
dense_2 (Dense)              (None, 133)               34048     
=================================================================
Total params: 164,863
Trainable params: 164,863
Non-trainable params: 0

训练我的顶尖模特了解瓶颈特征,准确率达到72%

在这里重新加载这些重量
代码未显示

加载VGG19底层与顶层合并

^{pr2}$

合并两个模型

from keras.layers import Input, Dense
from keras.models import Model

global_average_pooling2d_7 = vgg19.get_layer('block5_pool')  # shape=(?, 7, 7, 512)
bn_conv1_model = Model(inputs=vgg19.input, outputs=global_average_pooling2d_7.output)

new_model = Sequential()
new_model.add(bn_conv1_model)
new_model.add(vgg19top_model)
new_model.summary()

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
model_12 (Model) <-VGG19     (None, 7, 7, 512)         20024384  
_________________________________________________________________
sequential_6 (Sequential)    (None, 133)               164863    
=================================================================
Total params: 20,189,247
Trainable params: 164,863
Non-trainable params: 20,024,384

现在让我们对合并后的模型进行端到端的测试

它完全失败了,准确率为0%

我该如何对这个新模型进行端到端的测试,或者更确切地说,它的预测为何如此糟糕?在


Tags: from模型importnoneaddnewmodelparams

热门问题