gpt4 book ai didi

machine-learning - Keras 在 1000 多个类上进行迁移学习

转载 作者:行者123 更新时间:2023-11-30 09:44:35 24 4
gpt4 key购买 nike

如何将在 ImageNet(大约 1000 个类)上训练的 InceptionV3、ResNet50 等模型的迁移学习应用于超过 1000 个类的问题?

我正在使用 Keras,但对其他解决方案持开放态度。我熟悉加载经过训练的网络(例如 ImageNet 上的 ResNet50)的所有权重的想法,除了顶部(具有 1000 个单元的最终分类层),然后将网络的末端连接到我可以指定的其他层(全连接层、池化等)。然而,许多此类网络中最终层之前的层少于 3000 个单元,因此添加超过 3000 个单元的层将成为扩展层,有点像自动编码器中的解码器。通常,我会看到最终层的尺寸减小。解决这个问题的最佳方法是什么?

Keras 应用程序中的示例是:

from keras.applications.inception_v3 import InceptionV3
from keras.preprocessing import image
from keras.models import Model
from keras.layers import Dense, GlobalAveragePooling2D
from keras import backend as K

# create the base pre-trained model
base_model = InceptionV3(weights='imagenet', include_top=False)

# add a global spatial average pooling layer
x = base_model.output
x = GlobalAveragePooling2D()(x)
# let's add a fully-connected layer
x = Dense(1024, activation='relu')(x)
# and a logistic layer -- let's say we have 200 classes
predictions = Dense(200, activation='softmax')(x)

最佳答案

这称为微调 keras 模型。您应该删除训练模型的最后一层,然后对于每一层,您必须使用以下方法使权重更新为 false:

layer.trainable=False 

之后您可以添加自定义图层

例如:如果需要,可以添加一个包含超过 1000 个类的密集层并对其进行训练。然后,您可以在训练过程中更新最后一层的权重

如需更多帮助,请参阅此视频 video干杯:-)

关于machine-learning - Keras 在 1000 多个类上进行迁移学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54156128/

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