首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用迁移学习时不学习的模型

使用迁移学习时不学习的模型
EN

Data Science用户
提问于 2019-11-28 20:27:40
回答 2查看 1.3K关注 0票数 2

我正在从事一个关于图像分类的个人项目(两个类),并试图了解MobileNet v2结构将如何执行。虽然训练的准确性已经相当高,但经过第一次训练后,训练的准确率还在不断提高。然而,验证的准确性似乎永远停留在50%的关口附近。

我尝试过SGD、Adam和RMSprop作为优化器,但是它们都产生了相同的结果。我还使用了带有和不带MobileNet权重的v2,没有看到任何区别。其他CNN架构工作得很好,达到了95%的验证精度。我对我的模型使用了以下代码:

代码语言:javascript
运行
复制
from keras.applications import MobileNetV2
from keras.models import Sequential
from keras.layers import GlobalAveragePooling2D, Dropout, Dense

basemodel = MobileNetV2(input_shape=(128, 173, 3), include_top=False, weights=None)
model = Sequential(
    [
        basemodel,
        GlobalAveragePooling2D(),
        Dropout(0.5),
        Dense(64, activation="relu"),
        Dropout(0.3),
        Dense(1, activation="sigmoid"),
    ]
)
model.compile(loss="binary_crossentropy", optimizer="sgd", metrics=["accuracy"])

是否存在明显的遗漏,还是只是对数据集使用了不正确的超参数?

EN

回答 2

Data Science用户

发布于 2020-01-13 15:00:55

在tensorflow1,2+中学习任何模型的关键步骤是:

  • 对图像使用正确的预处理(查找需要mobilenetv2的预处理)
  • 从"imagenet“权重开始
  • 改变BatchNormalization行为,在tf中,默认的动量值是0.99,这不是最好的,在py手电筒中,它被设置为0.9 --当finetunig您的模型并且没有很多数据时,这个值会更好(有关更多信息,请参见链接 )。
票数 1
EN

Data Science用户

发布于 2020-06-12 07:44:30

  1. 使用imagenet权重。
  2. 冻结基本模型,以防止它在你的数据上受到训练。
  3. 您可能对trainset.Try进行了过度调整,使其不使用整个MobileNet模型,可能只使用了最初的10-15层。
票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/63951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档