def __init__(self, in_channels, out_channels, ksize, stride=1, pad=0,
wscale=1, bias=0, nobias=False, outsize=None, use_cudnn=True,
initialW=None, initial_bias=None):
kh, kw = _pair(ksize)
self.stride = _pair(stride)
self.pad = _pair(pad)
self.outsize = (None, None) if outsize is None else outsize
self.use_cudnn = use_cudnn
W_shape = (in_channels, out_channels, kh, kw)
super(Deconvolution2D, self).__init__(W=W_shape)
if isinstance(initialW, (numpy.ndarray, cuda.ndarray)):
assert initialW.shape == (in_channels, out_channels, kh, kw)
# For backward compatibility, the scale of weights is proportional to
# the square root of wscale.
initializers.init_weight(self.W.data, initialW,
scale=math.sqrt(wscale))
if nobias:
self.b = None
else:
self.add_param('b', out_channels)
if isinstance(initial_bias, (numpy.ndarray, cuda.ndarray)):
assert initial_bias.shape == (out_channels,)
if initial_bias is None:
initial_bias = bias
initializers.init_weight(self.b.data, initial_bias)
评论列表
文章目录