最近在跟踪keras的contri版的更新时,发现了冒出了一个Capsule层。于是我百度+谷歌一顿操作猛如虎,才发现在很早之前,胶囊网络的概念就提出了。但是限于胶囊网络的performance并不是在各个数据集都是碾压的情况,并且其计算量偏大,训练时间偏长,所以并没有被广泛的运用和替换。但是在官方给出的测试结果来看,其实效果还是挺不错的。
以上是原论文(https://arxiv.org/pdf/1710.09829.pdf)在mnist是数据集上的结果,结果是指错误率,可见效果还是有小幅提升的。在介绍胶囊网络之前,给大家推荐一篇博客,写得很好。先读懂CapsNet架构然后用TensorFlow实现:全面解析Hinton提出的Capsule | 机器之心。同时,在keras上有开发者提供的capsule层源码:keras-contrib/capsule.py at master · keras-team/keras-contrib · GitHub。本文将会以该源码为主,从各大博客的角度以及个人观点介绍胶囊网络。
另外,欢迎大家看看我之前介绍的bert模型 源码剖析transformer、self-attention(自注意力机制)、bert原理!_罗小丰同学的博客-CSDN博客_自注意力机制代码,两者在层的设计上游异曲同工之处
一、什么是胶囊网络?
看看博客中的一张图,简单明了。
简而言之就是,我有一个权重(叫做胶囊权重),它来来回回地跟输入数据做计算,一边计算一边更新自己(路由算法)
文章评论