【发布时间】:2017-09-06 12:32:37
【问题描述】:
我正在尝试构建一个 CNN 来对狗进行分类。事实上,我的数据集由 5 类狗组成。我将 50 张狗的图像分成 40 张用于训练的图像和 10 张用于测试的图像。 我已经基于 AlexNet 预训练模型训练了我的网络,经过 100,000 和 140,000 次迭代,但准确度始终在 20% 到 30% 之间。 事实上,我已经对 AlexNet 进行了如下调整:我将最后一个全连接网络的名称和 num_output 更改为 5。此外,我还更改了第一个全连接层 (fc6) 的名称。
那么为什么即使我使用了数据增强(裁剪)这个模型也失败了?
我应该在我的网络顶层使用线性分类,因为我有一点数据并且类似于 AlexNet 数据集(如这里提到的transfer learning),还是我的数据集与 AlexNet 的原始数据集非常不同,并且我应该在早期的网络中训练线性分类器?
这是我的求解器:
net: "models/mymodel/train_val.prototxt"
test_iter: 1000
test_interval: 1000
base_lr: 0.01
lr_policy: "step"
gamma: 0.1
stepsize: 100000
display: 20
max_iter: 200000
momentum: 0.9
weight_decay: 0.0005
snapshot: 1000
snapshot_prefix: "models/mymodel/my_model_alex_net_train"
solver_mode: GPU
【问题讨论】:
-
您的批量大小是多少? solver 文件的训练参数是什么?还有许多其他考虑因素,但这些都是一个好的开始。
标签: machine-learning deep-learning caffe