sun*_*wmy 5 classification machine-learning image-processing deep-learning keras
感谢您查看我的问题.我正在尝试基于一些预先训练的模型进行图像分类,图像应分为40类.我想使用VGG和Xception预训练模型将每个图像转换为两个1000维向量,并将它们堆叠成1*2000维度向量作为我的网络输入,并且网络具有40维输出.网络有2个隐藏层,一个有1024个神经元,另一个有512个神经元.
结构:image-> vgg(1*1000维),xception(1*1000维) - >(1*2000维)作为输入 - > 1024个神经元 - > 512个神经元 - > 40个维度输出 - > softmax
但是,使用这种结构我只能达到约30%的准确度.所以我的问题是,如何优化网络结构以获得更高的准确度?我不熟悉深度学习,所以我不确定我目前的设计是"正确的".我真的很期待你的建议
我不完全确定我理解你的网络架构,但有些部分对我来说看起来不正确。
\n\n迁移学习有两种主要场景:
\n\nConvNet 作为固定特征提取器。采用预训练网络(VGG 和 Xception 中的任何一个都可以,不需要两者),删除最后一个全连接层(该层\xe2\x80\x99s 输出是不同任务(如 ImageNet)的 1000 个类别分数),然后将 ConvNet 的其余部分视为新数据集的固定特征提取器。例如,在 AlexNet 中,这将为每个图像计算一个 4096 维向量,其中包含紧邻分类器之前的隐藏层的激活。提取所有图像的 4096-D 代码后,为新数据集训练线性分类器(例如线性 SVM 或 Softmax 分类器)。
\n\n技巧#1:仅采用一个预训练网络。
\n\n提示#2:您自己的分类器不需要多个隐藏层。
微调 ConvNet。第二种策略是不仅在新数据集上替换并重新训练 ConvNet 之上的分类器,而且还通过继续反向传播来微调预训练网络的权重。可以微调 ConvNet 的所有层,或者可以保持一些较早的层固定(由于过度拟合问题)并且仅微调网络的一些更高级别的部分。这是由于观察到 ConvNet 的早期特征包含更多通用特征(例如边缘检测器或颜色斑点检测器),这些特征对许多任务都有用,但 ConvNet 的后续层逐渐变得更加具体于类的细节包含在原始数据集中。
\n\n技巧#3:保持早期预训练层固定。
\n\n提示#4:使用较小的学习率进行微调,因为您不想太快太多地扭曲其他预训练层。
这种架构与我看到的解决相同问题的架构更加相似,并且有更高的机会达到高精度。
\n| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |