logo资料库

CapsuleNetWork:从TensorFlow复现代码理解胶囊网络(DynamicRoutingBetweenCapsul....pptx

第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
资料共32页,剩余部分请下载后查看
Dynamic Routing Between Capsules Qingyi Si(佀庆一)
CapsNet VS. CNN  CapsNet: a) Conv 1:常规卷积层提取局部特征 b) PrimaryCaps:由卷积过程构成的 capsule版卷积层,计算上等效与常规 卷积层,深层意义上不等,每个 capsule内部的8个feature构成了一个 由意义的整体 c) DigitCaps:全连接层  CNN: 重复卷积、pooling过程,最后 一个或多个fully connect层
one/ capsule_net __call__():来选择构建哪种layer(CONV,FC) routing():从上层的capsule的输出得到下层capsule的输入, 并且不断更新胶囊之间的权重系数C_ij, 这里不必根据loss来更新 squash():构造了一个针对向量的非线性激活函数 two/ CAPSULE_LAYER Build_arch():构造整个模型的各个层
一/CAPSULE_NET CapsNet: 两个卷积层(Conv 1, PrimaryCaps),一个全连接层(DigitCaps) 而在全连接层(及第二层到第三层之间)用了routing函数
第一层是一个普通的卷积层,由256个9x9的卷积核,得到了 20x20x256的三维矩阵(步幅为1:28-9+1=20)。 没有padding
第二层是primary capsules • 调用了CapsLayer()函数,但是没用里面的routing函数(False),而是调 用了普通的conv2d()函数,文件CapLayer.py中的__call__()函数完成 选择调用哪个函数来创建layer 具体如何调用和构建layer后面再解释~
第二层primaryCapsule 9x9 2x2 32 kernel size conv stride #Channels Input size 20x20x256 non-linearity fun Squashing fun(Eq. 1) 可将PrimaryCaps layer视为 8个并行常规卷积层的叠堆, 并且激活函数用了前面的squash,但是没用routing 从图中可以看出PrimaryCaps层的张量维度为6x6x8x32 (从上一层卷积得到6x6的方形矩阵,卷积核为9x9,步幅为2,故(20-9+1)/2=6) ,32是32个9x9的卷积核在步幅为2的情况下做的卷积,即应得到的张量维度为6x6x32, 而图上还有一个维度(vector的长度)为8.这个8是8个并行常规卷积层的堆叠而成。 routing
分享到:
收藏