machine-learning - 为 CNN 构建二元分类器的正确方法
问题描述
我使用预训练模型 VGG16 在 pytorch 上创建了一个神经网络,并添加了我自己的额外层来定义属于两个类之一。例如蜜蜂或蚂蚁。
model = models.vgg16(pretrained=True)
# Freeze early layers
for param in model.parameters():
param.requires_grad = False
n_inputs = model.classifier[6].in_features
# Add on classifier
model.classifier[6] = nn.Sequential(
nn.Linear(n_inputs, 256), nn.ReLU(), nn.Dropout(0.2),
nn.Linear(256, 2), nn.LogSoftmax(dim=1))
该模型适用于两个类,但是如果将鳄鱼图像上传到其中,很可能会将其视为蜜蜂)现在我想基于此模型制作一个二进制分类器,例如定义蜜蜂或不是蜜蜂蜜蜂(绝对是任何没有蜜蜂的图像)我刚刚开始了解神经网络,我需要有关正确方法是否会在两组图像中进行训练的建议,其中一组图像只有蜜蜂,而其他数千张随机图像。还是应该以其他方式完成?
解决方案
2 类分类器因图像不属于任何类而失败,这确实不足为奇。
是的,要训练新的一类分类器,请在我们的测试集中使用蜜蜂图像和一组非蜜蜂图像。您还需要适应类之间的不平衡,以避免过度拟合您拥有的蜜蜂图像。测试准确性会显示出这样的偏差。
推荐阅读
- iphone - iphone(ios)pf过滤器绕过每个主机的vpn
- ios - iOS / Swift:当触摸事件在 UIButton 上启动时,如何向上或向下滚动视图?
- ruby-on-rails - 尽管预检 OPTIONS 请求和 POST 成功,但 CORS 错误和意外的 404 错误
- sql - PostgreSQL 并不始终使用部分索引
- r - 你如何传播R中数据框中两个变量的对应最大值的错误?
- macos - Gstreamer 进程在 OSX 上以 Hello World 示例完成退出代码 132
- php - 使用 PHP 和 SQL,对于动态网页,存储从一个表的多行到另一行的单行的关联的最佳方法是什么
- javascript - 如何在下一个 js 中使用外部 js 库?
- macros - 如何在 Julia 中创建多行宏?
- typescript - 如何从数组值实现数学表达式?