gpt4 book ai didi

python - 如何使用 keras.applications 中的模型进行迁移学习?

转载 作者:IT老高 更新时间:2023-10-28 21:15:10 25 4
gpt4 key购买 nike

我想在 Keras 中获得预训练的 VGG16 模型,删除它的输出层,然后放置一个新的输出层,其中包含适合我的问题的类数量,然后将其拟合到新数据上。出于这个原因,我在这里尝试使用该模型:https://keras.io/applications/#vgg16 ,但由于它不是顺序的,我不能只是 model.pop()。从图层弹出并添加它也不起作用,因为在预测中它仍然期望旧形状。我该怎么做?有没有办法将这种类型的模型转换为Sequential

最佳答案

您可以在 model.layers 上使用 pop(),然后使用 model.layers[-1].output 创建新层.

例子:

from keras.models import Model
from keras.layers import Dense,Flatten
from keras.applications import vgg16
from keras import backend as K

model = vgg16.VGG16(weights='imagenet', include_top=True)

model.input

model.summary(line_length=150)

model.layers.pop()
model.layers.pop()

model.summary(line_length=150)

new_layer = Dense(10, activation='softmax', name='my_dense')

inp = model.input
out = new_layer(model.layers[-1].output)

model2 = Model(inp, out)
model2.summary(line_length=150)

或者,您可以使用这些模型的 include_top=False 选项。在这种情况下,如果您需要使用 flatten layer 那么您还需要传递 input_shape

model3 = vgg16.VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
model3.summary(line_length=150)

flatten = Flatten()
new_layer2 = Dense(10, activation='softmax', name='my_dense_2')

inp2 = model3.input
out2 = new_layer2(flatten(model3.output))

model4 = Model(inp2, out2)
model4.summary(line_length=150)

关于python - 如何使用 keras.applications 中的模型进行迁移学习?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41378461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com