ZFNet: Visualizing and Understanding Convolutional Networks

ZFnet的创新点主要是在信号的“恢复”上面,什么样的输入会导致类似的输出,通过这个我们可以了解神经元对输入的敏感程度,比如这个神经元对图片的某一个位置很敏感,就像人的鼻子对气味敏感,于是我们也可以借此来探究这个网络各层次的功能,也能帮助我们改进网络。

论文结构

在这里插入图片描述

  1. input: 3×224×224, filter size: 7, filter count: 96, stride: 2, padding: 1, 我觉得是要补一层零的,否则输出是109而不是110-->ReLU --> maxpool: size: 3×3, stride: 2, 似乎这里也要补一层零, 否则 11032+1=54 --> contrast normalized;
  2. input: 96×55×55, filter size: 5, count: 256, stride: 2, padding: 0 --> ReLU --> maxpool: size: 3×3, stride: 2, padding: 1--> contrast normlized;
  3. input: 256×13×13, filter size: 3, count: 384, stride: 1, padding: 1 --> ReLU
  4. input: 384×13×13, filter size: 3, count: 384, stride: 1, padding: 1 --> ReLU
  5. input: 384×13×13, filter size: 3, count: 256, stride: 1, padding: 1 --> ReLU --> maxpool: size: 3, stride: 2, padding: 0 --> contrast normlized?
  6. input: 66256 -- > 4096 -- > ReLU -- > Dropout(0.5)
  7. input: 4096 -- > 4096 --> ReLU -- > Dropout(0.5)
  8. input: 4096 --> numclass ...

反卷积

网上看了很多人关于反卷积的解释,但是还是云里雾里的.

先关于步长为1的,不补零的简单情况进行分析吧, 假设:

input: i×i,
kernel_size: k×k ,
stride: 1,
padding: 0

此时输出的大小o应当满足:

i=k+o1o=ik+1

现在,反卷积核大小依旧为k=k, 那么我们需要补零c为多少才能使得反回去的特征大小为i.
即:

2c+o=k+i1c=k1

即我们要补零c=k1.

如果stride 不为1呢?设为s, 那么:

i=k+s(o1)o=iks+1

按照别的博客的说话,需要在特征之间插入零那么:

2c+(s1)(o1)+o=k+s(i1)

如果我们希望s=1(至于为什么希望我不清楚):

c=k1

如果还有补零p:

i+2p=k+s(o1)

但是回去的时候我们是不希望那个啥补零的,所以:

2c+(s1)(o1)+o=k+s(i1)

不变,
如果s=1, 结果为:

c=kp1

最大的问题是什么,是why! 为什么要这样反卷积啊?

posted @   馒头and花卷  阅读(346)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示