CNN 之 fine-tune methods

2018-04-14  本文已影响0人  vola_lei

CNN 的基本结构是由卷基层和全连接层构成的. 对于在大规模数据集(例如ImageNet)上训练好的网络, 我们可以利用它的权重来帮助我们实现我们的任务.
从原理上来讲,随机初始化容易将网络导向不确定的局部最优, 因此一般需要利用多次随机初始化训练来验证结果的有效性. 而借助已训练好的网络或者说利用已训练好的的网络权重作为网络初始值已被广泛证明有利于网络以较快的速度趋于最优化(transfer learning).
这样做的原理往往是说不清楚的, 但是不乏附会的理由. 这里我们不纠结那些, 只来考虑如何用已训练好的网络来进行fine-tune已适应我们自己的数据.

借助已训练好的网络, fine-tune我们自己的数据. 这里分两种情况:

fine tune 的方法.

整体训练:

1 对于情况A, 权重(在输出类别个数改变的情况下,除了最有一层外,其余层的权重都可以直接调用原始网络的)可以调用原始网络的. 然后在原始网络上直接重新进行训练.
2 对于情况B, 卷积层的权重可以直接调用原始网络, 全连接层的权重可以:
2.1. 随机初始化,然后整体一起训练.
2.2. 先freeze卷基层, 用我们的数据训练一下随机初始化的全连接层,然后将训练好的全连接层和卷基层拼在一起,整体重新训练.

局部训练

  1. 卷基层freeze, 随机初始化全连接层,然后用我们自己数据重新训练全连接层.
    这里的卷基层相当于特征提取层, freeze的目的是为了保留它之前的特征提取能力.
上一篇 下一篇

猜你喜欢

热点阅读