Hi,
There seems to be a problem with conv3x3 of self.conv1 of BasicBlock. In the forward function of BasicBlock, you are passing two inputs to self.conv1 (out = self.conv1(x,sample)). Usually, conv3x3 is implemented in the following manner:
def conv3x3(in_planes, out_planes, stride=1, groups=1, dilation=1):
    """3x3 convolution with padding"""
    return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,
                     padding=dilation, groups=groups, bias=False, dilation=dilation)


So it should not take your additional sample input/parameter. Otherwise, the code seems fine to me.