图中黑点为paddind
参考博客https://blog.csdn.net/u012759136/article/details/52434826#t9
a为普通的池化的结果,b为“优雅”池化的结果。我们设想在a上进行卷积核尺寸为3的普通卷积,则对应的感受野大小为7.而在b上进行同样的操作,对应的感受野变为了5.感受野减小了。但是如果使用hole为1的Atrous Convolution则感受野依然为7.所以,Atrous Convolution能够保证这样的池化后的感受野不变,从而可以fine tune,同时也能保证输出的结果更加精细。
**
keras中调用的代码 AtrousConvolution2D 或AtrousConvolution1D**
代码部分参考https://blog.csdn.net/zhili8866/article/details/53262114
AtrousConvolution1D
用于对1D信号进行滤波,是膨胀/带孔洞的卷积。当使用该层作为首层时,需要提供关键字参数input_dim或input_shape。例如input_dim=128长为128的向量序列输入,而input_shape=(10,128)代表一个长为10的128向量序列
AtrousConvolution2D
该层对二维输入进行Atrous卷积,也即膨胀卷积或带孔洞的卷积。当使用该层作为第一层时,应提供input_shape参数。例如input_shape = (3,128,128)代表128*128的彩色RGB图像
AtrousConvolution1D(nb_filter, filter_length, init='uniform', activation='linear',
weights=None, border_mode='valid', subsample_length=1,
activity_regularizer=None, W_constraint=None, b_constraint=None, bias=True)
keras.layers.convolutional.AtrousConvolution2D(nb_filter, nb_row, nb_col, init='glorot_uniform',
activation='linear', weights=None, border_mode='valid',
subsample=(1, 1), atrous_rate=(1, 1), dim_ordering='th',
W_regularizer=None, b_regularizer=None, activity_regularizer=None,
W_constraint=None, b_constraint=None, bias=True)
from keras.layers import AtrousConvolution2D
from keras.layers import AtrousConvolution1D
AtrousConvolution2D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(inputs)