我们从Python开源项目中,提取了以下2个代码示例,用于说明如何使用keras.layers.convolutional.AtrousConvolution2D()。
def constructNet(input_dim=784,n_hidden=1000,n_out=1000,nb_filter=50,prob=0.5,lr=0.0001): nb_filters=50 input_img= Input(shape=list(input_dim)) a = input_img a1 = AtrousConvolution2D(nb_filters, 3, 3,atrous_rate=(1,1),border_mode='same')(a) b = AtrousConvolution2D(nb_filters, 3, 3,atrous_rate=(1,1),border_mode='same')(a) #We only use the diagonal output from this, TODO: only filter diagonal a2=Lambda(GetDiag, output_shape=out_diag_shape)(b) comb=merge([a1,a2],mode='sum') comb = BatchNormalization()(comb) a = Activation('relu')(comb) l=5 for i in range(1,l): a1 = AtrousConvolution2D(nb_filters, 3, 3,atrous_rate=(l,l),border_mode='same')(a) b = AtrousConvolution2D(nb_filters, 3, 3,atrous_rate=(l,l),border_mode='same')(a) #We only use the diagonal output from this, TODO: only filter diagonal a2=Lambda(GetDiag, output_shape=out_diag_shape)(b) comb=merge([a1,a2],mode='sum') comb = BatchNormalization()(comb) a = Activation('relu')(comb) decoded = Convolution2D(1, 1, 1, activation='sigmoid', border_mode='same')(a) final=Flatten()(decoded) model = Model(input_img, final) model.summary() model.compile(optimizer='adam', loss='binary_crossentropy') return model
def __transition_up_block(ip, nb_filters, type='upsampling', output_shape=None, weight_decay=1E-4): ''' SubpixelConvolutional Upscaling (factor = 2) Args: ip: keras tensor nb_filters: number of layers type: can be 'upsampling', 'subpixel', 'deconv', or 'atrous'. Determines type of upsampling performed output_shape: required if type = 'deconv'. Output shape of tensor weight_decay: weight decay factor Returns: keras tensor, after applying upsampling operation. ''' if type == 'upsampling': x = UpSampling2D()(ip) elif type == 'subpixel': x = Convolution2D(nb_filters, 3, 3, activation="relu", border_mode='same', W_regularizer=l2(weight_decay), bias=False, init='he_uniform')(ip) x = SubPixelUpscaling(scale_factor=2)(x) x = Convolution2D(nb_filters, 3, 3, activation="relu", border_mode='same', W_regularizer=l2(weight_decay), bias=False, init='he_uniform')(x) elif type == 'atrous': # waiting on https://github.com/fchollet/keras/issues/4018 x = AtrousConvolution2D(nb_filters, 3, 3, activation="relu", W_regularizer=l2(weight_decay), bias=False, atrous_rate=(2, 2), init='he_uniform')(ip) else: x = Deconvolution2D(nb_filters, 3, 3, output_shape, activation='relu', border_mode='same', subsample=(2, 2), init='he_uniform')(ip) return x