CNN基础论文 精读+复现----ZFnet(一)

前言

原文下载地址:https://arxiv.org/pdf/1311.2901.pdf

前几天看的VGG,今天搞一下ZFnet吧,按照顺序应该是 Alexnet然后 ZFnet,之后再VGG的。不过都一样,ZF里有个反卷积我还挺想看看是咋回事的。

简单介绍一下这个论文,ZFnet(Matthew Zeiler和Rob Fergus)是2013 年 ILSVRC 图像分类的冠军,ZFnet是在Alexnet(2012)上做的改进(前两天看的VGG也是Alex上的修改,看来Alex有点强啊,不过这篇也很强,卷积可视化领域鼻祖~)。

所以先看一下Alex再看这个会比较轻松。

CNN基础论文 精读+复现----AlexNet(一)

论文标题:Visualizing and Understanding Convolutional Networks(可视化并理解卷积神经网络)

第1页

开头的摘要就直接提出了这篇论文的中心 找到了一种很巧妙的可视化网络中间层特征的方法。使用这个技巧就打破了在此之前的卷积操作的黑箱,然后利用它改进之前的网络(比如Alexnet)。

摘要中有个单词 ablation 翻译成消融的意思,我还挺费解消融研究是个啥意思,查了查资料,就是 对比试验 的意思。。。

摘要的最后作者说 改进之后的网络模型有很好的 泛化能力 ,既 迁移学习能力(仅改变最后一层的softmax分类器) 并在Caltech-101和Caltech-256数据集上表现很好。

引言部分提出了我们常说的深度学习三大马车:

  • 更大规模的数据集
  • 更强的GPU
  • 更好的正则化策略

之后说明了作者在提出的可视化过程叫做 反卷积 Deconvo-lutional Network (deconvnet)。

第2-3页

1.1说了一些有的没的,从第二章就开始介绍可视化方法-反卷积了。

首先构造正常的网络,就还是Alexnet那一套,卷积+Relu+池化+随机梯度下降+反向传播,然后进行正常的卷积操作,我们想看某一层的可视化结果,就指定该层的 feature map不为0,其余的全设为0。然后反向传回到输入(不是梯度的那个反向传播)。

所以 :

正常的是 : 卷积 -> Relu -> 池化
回传: 反池化 -> 反Relu -> 反卷积

反池化:

反池化就是正常池化的反向操作,在Alex里采用的是最大池化操作。
在正常的最大池化中,提取某一个小区域的最大值作为结果,像下面这样:

在这里插入图片描述
可以发现,在正常操作时,假设现在操作的是红色区域,就是最后一个四方块格子的时候,里面的最大值是0.5。

当进行反池化操作时,我们只知道 0.5这个最大值,对于其他的 -0.1,-0.2,0.3这三个元素则不可避免的丢失。

论文中作者使用了一个方法,在正向最大池化操作时,提取出最大值的同时记录了该最大值在原矩阵中的位置,这个操作称为 switches。 什么?switch?突然不想学了

反向操作回去:
除了最大值之外的其他元素不可避免的丢失,像下面这样:
在这里插入图片描述

所以反池化并没有真正意义上的完全还原,只是一种近似而已。

反激活:

反激活函数,像上面那样反着推一边Relu吗?并不是i,而是继续使用一边Relu函数,看一下Relu公式就明白了 f(x) = max(0,x),在正向卷积层中,利用relu这一非线性函数来校正feature maps,使得特征值均为正值,所以根据公式,再用一下Relu就好了。

反卷积:

在正常卷积中,用卷积核和原像素中的窗口点进行相乘再相加,反向卷积过程也是如此,只不过反卷积中的卷积核使用的是原卷积核的转置,就是线性代数里的那个矩阵转置的转置。

卷积过程:
下面蓝色为输入,上面绿色为输出
在这里插入图片描述
反卷积过程:
下面蓝色为输入,上面绿色为输出

在这里插入图片描述
这一系列的反操作并不是样本图像,也没有生成新的图像,就是一个中间层的投影得到的。

第3-4页

第三章训练细节,使用的也是ImageNet数据集,整体和Alexnet很像。不同点是,Alex将整个数据集放到了两块GPU上,而ZFnet没用两块。

其他的 数据预处理、数据增强、优化器、各种超参数、正则化dropout等 都和Alexnet一样,就不说了。

第四章就是论文的重点了–可视化。

第四页一堆图,直接拿出来说。

Layer 1

可以看到 经过第一层卷积,上面小九宫格(卷积核)的每一个都对应后面九个格子(原图中的top-9)。

既能使上面9个卷积核Feature Map中的数值最大的原图top-9。

在这里插入图片描述

Layer 2:

左边的图是第二层卷积核得到的特征图通过 反卷积 deconvnet之后映射回原像素空间可视化得到的图像。
在这里插入图片描述
所以在这里可以明白,这篇论文就是要看到每一层中间层所提取到的 Feature Map 到底是什么样的。

Feature Map:卷积核卷出来的。

Layer 3、 Layer 4、 Layer 5:

第3,4,5层都是同理。

可以得到俩结论:

  • 网络越深 越关注语义信息。
  • 网络越浅 越关注空间信息。

后续 :CNN基础论文 精读+复现----ZFnet(二)

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Dual-CNN+Bi-LSTM (DCNN+Bi-LSTM)是一种结合了Dual-CNN和Bi-LSTM的网络模型,用于文本分类任务。它的结构包括两个主要部分:Dual-CNN和Bi-LSTM。 Dual-CNN是一种使用两个不同大小的卷积核进行卷积操作的模型。它的目的是捕捉不同大小的语义信息。通过使用不同大小的卷积核,Dual-CNN可以同时捕捉局部和全局的语义特征。 Bi-LSTM是一种双向长短期记忆网络,用于学习文本中的上下文信息。Bi-LSTM通过同时考虑前向和后向的上下文信息,可以更好地理解文本的语义。 下面是一个示例代码,演示了如何实现Dual-CNN+Bi-LSTM模型: ```python import tensorflow as tf from tensorflow.keras.layers import Input, Embedding, Conv1D, MaxPooling1D, Bidirectional, LSTM, Dense # 定义输入层 input_layer = Input(shape=(max_length,)) # 定义嵌入层 embedding_layer = Embedding(vocab_size, embedding_dim)(input_layer) # 定义Dual-CNN层 conv1 = Conv1D(filters=32, kernel_size=3, activation='relu')(embedding_layer) conv2 = Conv1D(filters=32, kernel_size=5, activation='relu')(embedding_layer) pool1 = MaxPooling1D(pool_size=2)(conv1) pool2 = MaxPooling1D(pool_size=2)(conv2) # 将Dual-CNN层的输出拼接起来 concat = tf.keras.layers.concatenate([pool1, pool2], axis=1) # 定义Bi-LSTM层 lstm = Bidirectional(LSTM(64))(concat) # 定义输出层 output_layer = Dense(num_classes, activation='softmax')(lstm) # 定义模型 model = tf.keras.Model(inputs=input_layer, outputs=output_layer) # 编译模型 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(X_train, y_train, epochs=10, batch_size=32) # 使用模型进行预测 predictions = model.predict(X_test) ``` 请注意,上述代码中的`max_length`是输入文本的最大长度,`vocab_size`是词汇表的大小,`embedding_dim`是嵌入层的维度,`num_classes`是分类的类别数。你需要根据你的具体任务进行相应的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度不学习!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值