Just in case someone falls upon this, you may find this discussion useful 21.
Also I finally shifted to reshaping to 4D tensor for BatchNorm2D (the original) and reshaping back to 5D after it.
class myBatchNorm3D(nn.Module):
	"""docstring for myBatchNorm3D"""
	def __init__(self, inChannels):
		super(myBatchNorm3D, self).__init__()
		self.inChannels = inChannels
		self.bn = nn.BatchNorm2d(self.inChannels)

	def forward(self, input):
		out = input
		N,C,D,H,W = out.size()
		out = out.squeeze(0).t().reshape(D,C,H,W)
		out = self.bn(out.contiguous())
		out = out.t().reshape(C,D,H,W).unsqueeze(0)
		return out

If it is part of some ‘model’ as member bn, just do model.bn.bn = ‘old bn to inflate’ (assign the batchnorm 2d layer, when I only copy weights and biases and running estimates for 2D layer, values were off by margin)