def deconvolution(layer, layer_in, layerId):
out = {}
padding = get_padding(layer)
k_h, k_w = layer['params']['kernel_h'], layer['params']['kernel_w']
s_h, s_w = layer['params']['stride_h'], layer['params']['stride_w']
d_h, d_w = layer['params']['dilation_h'], layer['params']['dilation_w']
if (layer['params']['weight_filler'] in fillerMap):
kernel_initializer = fillerMap[layer['params']['weight_filler']]
else:
kernel_initializer = layer['params']['weight_filler']
if (layer['params']['bias_filler'] in fillerMap):
bias_initializer = fillerMap[layer['params']['bias_filler']]
else:
bias_initializer = layer['params']['bias_filler']
filters = layer['params']['num_output']
if (padding == 'custom'):
p_h, p_w = layer['params']['pad_h'], layer['params']['pad_w']
out[layerId + 'Pad'] = ZeroPadding2D(padding=(p_h, p_w))(*layer_in)
padding = 'valid'
layer_in = [out[layerId + 'Pad']]
kernel_regularizer = regularizerMap[layer['params']['kernel_regularizer']]
bias_regularizer = regularizerMap[layer['params']['bias_regularizer']]
activity_regularizer = regularizerMap[layer['params']['activity_regularizer']]
kernel_constraint = constraintMap[layer['params']['kernel_constraint']]
bias_constraint = constraintMap[layer['params']['bias_constraint']]
use_bias = layer['params']['use_bias']
out[layerId] = Conv2DTranspose(filters, [k_h, k_w], strides=(s_h, s_w), padding=padding,
dilation_rate=(d_h, d_w), kernel_initializer=kernel_initializer,
bias_initializer=bias_initializer,
kernel_regularizer=kernel_regularizer,
bias_regularizer=bias_regularizer,
activity_regularizer=activity_regularizer, use_bias=use_bias,
bias_constraint=bias_constraint,
kernel_constraint=kernel_constraint)(*layer_in)
return out
评论列表
文章目录