深度学习中CNN网络的感受野计算(Calculating Receptive Field of CNN)


主要参考博客1
主要参考博客2

公式来源链接


感受野概念

在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(feature map)上每个像素点在原始图像上映射的区域大小,这里的原始图像是指网络的输入图像,是经过预处理(如resize,warp,crop)后的图像。

为什么要计算感受野?
因为感受野代表了深度学习网络每一层中的像素映射到输入图像的区域,感受野的大小直接影响网络层对于输入图像的特征感受级别,即每一层获得的特征(feature map)是全局的、语义层次比较高的,还是局部的、细节的特征。一般来说感受野小的时候,也就是CNN网络的头部层,其经过卷积和池化的次数较小,输出的feature map大小较大,反映的特征也更为精细和注重细节;而在CNN网络的尾部层,输入图像经过了大量的卷积和池化次数,feature map的尺寸大小降低的很小,感受野也变的很大,一个像素可以看到前部层的很大一个区域,因此这种feature map反映出来的特征更加注重整体和全局。所以这也是感受野概念的来源,精确计算感受野的大小对于设计良好的网络具有重要作用。


感受野计算公式—从第一层开始计算

在这里插入图片描述数学公式输入起来比较费劲,我直接翻译解释一下:

公式中l k-1表示第k-1层的感受野大小,fk代表第k层滤波核的大小(假设滤波核的高度和宽度一致),si代表第i层的步长。

这个公式计算的是从第1层开始的感受野,即需要从第一层的感受野逐步开始计算后面所有的感受野。直观地来看,第k层的感受野相对第k-1层中多包涵了(fk-1)*sk-1个像素数。然而这种增加需要回传到第一层,所以这种增加是阶乘——即第k-1层中的步长是比更低层中的步长呈现指数级增长的。

ps:公式中那个特殊的符号代表连乘。

来源于主要参考博客2一个公式如下:
在这里插入图片描述
r代表感受野大小,k代表kernel大小,s代表stride步长。


AlexNet感受野计算过程

我将使用下面公式进行计算:
在这里插入图片描述
下表为AlexNet每一层输入尺寸大小、卷积核大小、步长、补圈数、输出尺寸以及感受野大小参数表。
在这里插入图片描述以第一层为例,计算第一层的时候认为s0=1,l0(感受野大小)=1,kernel_size=1111,所以带入公式就是下表中第二行。
第二层,s1=4,l1=11,kernel_size=3
3,带入公式就是下表中第三行,依次类推。

即可完全求出AlexNet网络每一层的感受野大小

No.计算过程感受野大小
11+(11-1)x1=1111
211+(3-1)x4 =1919
319+(5-1)x4x2=5151
451+(3-1)x4x2x1=6767
567+(3-1)x4x2x1x2=9999
699+(3-1)x4x2x1x2x1=131131
7131+(3-1)x4x2x1x2x1x1=163163
8163+(3-1)x4x2x1x2x1x1x1=195195

感受野计算的过程只是针对 卷积层和池化层,同时padding不会影响感受野大小的计算。


附上一张图,可视化表示感受野的大小,来源于主要参考博客1。
在这里插入图片描述


2019.10.18.
希望能帮到你。你的点赞是对我最大的认可。谢谢


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sure, here's an example code for calculating text similarity using deep learning: ``` import tensorflow as tf from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences from tensorflow.keras.layers import Input, Embedding, LSTM, Dense, Concatenate, Bidirectional from tensorflow.keras.models import Model # example texts text1 = "The quick brown fox jumps over the lazy dog" text2 = "A quick brown dog jumps over the lazy fox" # define tokenizer tokenizer = Tokenizer(num_words=10000) tokenizer.fit_on_texts([text1, text2]) # convert texts to sequences seq1 = tokenizer.texts_to_sequences([text1])[0] seq2 = tokenizer.texts_to_sequences([text2])[0] # pad sequences to fixed length max_len = 10 seq1 = pad_sequences([seq1], maxlen=max_len, padding='post')[0] seq2 = pad_sequences([seq2], maxlen=max_len, padding='post')[0] # define model architecture input1 = Input(shape=(max_len,)) input2 = Input(shape=(max_len,)) embedding_layer = Embedding(input_dim=len(tokenizer.word_index)+1, output_dim=100) lstm_layer = Bidirectional(LSTM(128)) dense_layer = Dense(64, activation='relu') output_layer = Dense(1, activation='sigmoid') embedded1 = embedding_layer(input1) embedded2 = embedding_layer(input2) encoded1 = lstm_layer(embedded1) encoded2 = lstm_layer(embedded2) merged = Concatenate()([encoded1, encoded2]) dense1 = dense_layer(merged) output = output_layer(dense1) model = Model(inputs=[input1, input2], outputs=output) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # train model (not necessary for text similarity calculation) labels = [1] model.fit(x=[seq1, seq2], y=labels, epochs=10) # calculate similarity score similarity_score = model.predict([seq1, seq2])[0][0] print("Similarity score: %.2f" % similarity_score) ``` Note that this is just an example code, and there are many ways to calculate text similarity using deep learning. The model architecture used here is a simple one, consisting of an embedding layer, a bidirectional LSTM layer, a dense layer, and an output layer. The model is trained on a binary classification task (whether two texts are similar or not), but the trained model can also be used to calculate similarity scores directly, as shown in the last few lines of the code.

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值