@MrLonelyZC88 常规的CNN训练收敛太慢,借用知乎上的评论:理解了本身CNN的基础含义,再来看看这些先进的CNN,是很有必要的,不要指望只靠卷积层池化层就可以得到好的效果,后来加入CNN的trick不计其数,而且也都是里程碑式的成果。
Inception流派:谷歌流派,这一派最早起源于NIN,称之为网络中的网络,后被谷歌发展成Inception模型(这个单词真的不好翻译。。。)。这个模型的特点是增加模型的宽度,使得模型不仅仅越长越高,还越长越胖。也就是说每一层不再用单一的卷积核卷积,而是用多个尺度的卷积核试试。显然,如果你熟悉CNN,就不难发现,这样做会使每一层的feature map数量猛增,因为一种尺寸的卷积核就能卷出一系列的feature map,何况多个!这里google使用了1*1的卷积核专门用来降channel。谷歌的特点是一个模型不玩到烂绝不算完,所以又发展出了Inception v2、Inception v3、Inception v4等等。
残差流派:2015年ResNet横空出世,开创了残差网络。使用残差直连边跨层连接,居然得到了意想不到的好效果。最重要的是,这一改进几乎彻底突破了层数的瓶颈,1000层的resnet不是梦!之后,最新的DenseNet丧心病狂地在各个层中间都引入了残差连接。目前大部分模型都在尝试引入残差连接。注意,到此为止,大部分模型已经丢弃了全连接层,改为全局平均池化。大大降低了参数量。
混合流派:这一派不说了,就是看到哪几类模型效果好,就把这类技术混杂起来。典型的就是Xception和ResIception,将Inception和残差网络结合起来了。
BatchNromalization:不得不提这个批量标准化技术,在此技术出现之前,CNN收敛很慢,此技术出现后,大大加快了模型收敛速度,还兼具一定的防过拟合效果。当然,这个技术不仅仅限于CNN。
如果采用这些里程碑式的trick是否能大大提高训练速度呢?希望楼主尝试下。
使用Python+Tensorflow的CNN技术快速识别验证码原文地址:https://finthon.com/python-tensorflow-cnn-captcha/ 近年来,机器学习变得愈加火热,中国选手柯洁与AlphaGo的人...
我感觉这种方式似乎不是最好的方式,就拿6位纯字母组合来说,6位数字可能的排列组合共有26*26*26*26*26*26=308915776种组合,如果加上数字,那就更多了。对于训练集来说,把验证码当做整体,如果某个字母组合未曾出现在训练集中,是否能够识别呢?
采用Hinton最新的论文Capsules Net是否会好些?
使用Python+Tensorflow的CNN技术快速识别验证码原文地址:https://finthon.com/python-tensorflow-cnn-captcha/ 近年来,机器学习变得愈加火热,中国选手柯洁与AlphaGo的人...