def inv(self, output):
output = output - self.b.dimshuffle('x', 0, 'x', 'x')
s, f = self.output_shape, self.filter_shape
hzeros = T.basic.zeros((s[0], s[1], (f[2]-1)//2, s[3]), dtype=theano.config.floatX)
vzeros = T.basic.zeros((s[0], s[1], s[2] + (f[2]-1), (f[3]-1)//2), dtype=theano.config.floatX)
output = T.concatenate([hzeros, output, hzeros], axis=2)
output = T.concatenate([vzeros, output, vzeros], axis=3)
output = conv.conv2d(
input=output.dimshuffle(0,1,2,3),
filters=self.W.dimshuffle(1,0,2,3)[:,:,::-1,::-1],
border_mode='valid')
return output
评论列表
文章目录