问题:这些神经网络的原文本(prototext)定义需要做什么修改吗?我们修改了全连接层名和输出结果分类类别数,那么在什么情况下其它参数也能或也需要修改的? 回答:问得好,这也是我有一些疑惑的地方。例如,我知道我们能「固定」确切的神经网络层级,并保证层级之间的权重不改变。但是要做其它的一些改变就涉及到理解我们的神经网络层级是如何起作用的,这已经超出了这份入门向导的范围,同样也超出了这份向导作者现有的能力。 就像我们对 AlexNet 进行微调,将下降的学习速率由 0.01 减少十倍到 0.001 一样。 问:还有什么修改是对这些网络微调有意义的?遍历所有数据的次数(numbers of epochs)不同怎么样,改变批量梯度下降的大小(batch sizes)怎么样,求解器的类型(Adam、 AdaDelta 和 AdaGrad 等)呢?还有下降学习速率、策略(Exponential Decay、Inverse Decay 和 Sigmoid Decay 等)、步长和 gamma 值呢? 问得好,这也是我有所疑惑的。我对这些只有一个模糊的理解,如果你知道在训练中如何修改这些值,那么我们很可能做出些改进,并且这需要更好的文档。 因为 GoogLeNet 比 AlexNet 有更复杂的网络构架,所以微调需要更多的时间。在我的笔记本电脑上,用我们的数据集重新训练 GoogLeNet 需要 10 分钟,这样才能实现 100% 的准确率,同时损失函数值只有 0.0070。
正如我们看到的 AlexNet 微调版本,我们修改过的 GoogLeNet 表现得十分惊人,是我们目前最好的。
使用我们的模型 (责任编辑:本港台直播) |