Dynamic Routing Between Capsules
2018年11月18日
14:39
https://github.com/ageron/handson-ml
屏幕剪辑的捕获时间: 2018/11/18 14:43
C类似于max_pooling(结果由卷积后的输出决定)
屏幕剪辑的捕获时间: 2018/11/18 14:48
流程类似于RNN,输出在下一轮被用。
屏幕剪辑的捕获时间: 2018/11/18 14:51
屏幕剪辑的捕获时间: 2018/11/18 14:56
固定v1的其他维度,只改变一个维度,观察输出reconstruction network输出的结果,发现该维度的特征是控制,粗细、旋转等等。
屏幕剪辑的捕获时间: 2018/11/18 15:00
CNN对同一类的图片的输出是相同的,但是capsule对进行翻转的同类图片,输出向量也是翻转(取负数)的结果。
屏幕剪辑的捕获时间: 2018/11/18 15:02
胶囊的同变性:
池化pooling会丢失掉精确的位置信息和姿态。精确的图像分区和目标检测(位置和姿态)会受到干扰。
屏幕剪辑的捕获时间: 2018/11/18 15:04
capsule类似于memory network。
屏幕剪辑的捕获时间: 2018/11/18 15:05
屏幕剪辑的捕获时间: 2018/11/18 15:12
屏幕剪辑的捕获时间: 2018/11/18 15:13
squashing类似于softmax,使用非线性变换将向量的模归一化到【0,1】.
softmax:
屏幕剪辑的捕获时间: 2018/11/18 15:19
屏幕剪辑的捕获时间: 2018/11/18 15:23
屏幕剪辑的捕获时间: 2018/11/18 15:27
使用9*9的filter,得到ReLU后的卷积结果,将其分组得到32个caps并flatten成1152*8,后全连接得到10个16维的capsule.将每个胶囊计算的范数算argmax得到胶囊的标号,即分类标签。
Related Paper
屏幕剪辑的捕获时间: 2018/11/18 15:34
屏幕剪辑的捕获时间: 2018/11/18 15:43
屏幕剪辑的捕获时间: 2018/11/18 16:02
类似Kmeans的routing agreement.
屏幕剪辑的捕获时间: 2018/11/18 16:10
capsule可以通过多轮投票的方式选出正确的house+boat组合,而并不是倒着的house,适用于复杂场景的图像分区。
屏幕剪辑的捕获时间: 2018/11/18 19:37
Margin loss.如果该类别是当前向量所表示的类,该向量范数>0.9,否则<0.1。
屏幕剪辑的捕获时间: 2018/11/18 19:39
Reconstruction network有正则化,防止过拟合的作用。
代码分析:
屏幕剪辑的捕获时间: 2018/11/18 19:52
屏幕剪辑的捕获时间: 2018/11/18 20:03
Input_layer:X是输入的灰度图,28*28*1
Primary_capsule_layer(绿色的初始胶囊激活向量)=2*卷积层+reshape+squash:
屏幕剪辑的捕获时间: 2018/11/18 20:21
Digit capsules:
屏幕剪辑的捕获时间: 2018/11/18 22:42
屏幕剪辑的捕获时间: 2018/11/18 22:43
屏幕剪辑的捕获时间: 2018/11/18 16:43
屏幕剪辑的捕获时间: 2018/11/18 20:44
屏幕剪辑的捕获时间: 2018/11/18 20:45
屏幕剪辑的捕获时间: 2018/11/18 20:46
Scale production 点乘 vj actual output vector,说明了在某个j类别中,使用第i个子特征向量最能表示该数字或者类别的特征。即提取了主特征。
屏幕剪辑的捕获时间: 2018/11/18 22:23
Digit Capsules:动态循环,可改变循环次数。
屏幕剪辑的捕获时间: 2018/11/18 22:33
Length:计算10个向量的范数或者长度作为分类概率(单纯比较大小,不需要softmax),类似之前的routing 环节需要使用homemade 范数,因为tensorflow自带的范数,在0向量处训练会爆炸。
而且,可以计算判断图像中出现的两个不同的数字,相同数字无法判断。
屏幕剪辑的捕获时间: 2018/11/19 10:34
Margin loss:使用onehot确定当前变量K和预测标签是否相同,通过上述函数表达式计算Lk.
屏幕剪辑的捕获时间: 2018/11/19 10:39
屏幕剪辑的捕获时间: 2018/11/19 10:40
屏幕剪辑的捕获时间: 2018/11/19 10:43
在训练中,用真实label的onehot向量mask与digit capsules的输出相乘;
在测试时,用预测标签的onehot向量mask与digit capsules的输出相乘。
屏幕剪辑的捕获时间: 2018/11/19 10:51
屏幕剪辑的捕获时间: 2018/11/19 11:03
Github 中加上了用validation+提前截止寻找最优模型,防止过拟合的方法。
屏幕剪辑的捕获时间: 2018/11/19 11:06
屏幕剪辑的捕获时间: 2018/11/18 19:53
loss用全连接的输出方差决定,28*28=784