stackhourglass.py
1.
def convbn_3d(in_planes, out_planes, kernel_size, stride, pad):
return nn.Sequential(nn.Conv3d(in_planes, out_planes, kernel_size=kernel_size, padding=pad, stride=stride,bias=False),
nn.BatchNorm3d(out_planes))
class PSMNet(nn.Module):
def __init__(self, maxdisp):
self.classif1 = nn.Sequential(convbn_3d(32, 32, 3, 1, 1),
nn.ReLU(inplace=True),
nn.Conv3d(32, 1, kernel_size=3, padding=1, stride=1,bias=False))
self.classif2 = nn.Sequential(convbn_3d(32, 32, 3, 1, 1),
nn.ReLU(inplace=True),
nn.Conv3d(32, 1, kernel_size=3, padding=1, stride=1,bias=False))
self.classif3 = nn.Sequential(convbn_3d(32, 32, 3, 1, 1),
nn.ReLU(inplace=True),
nn.Conv3d(32, 1, kernel_size=3, padding=1, stride=1,bias=False))
print('stackhourglass classif1')
print(out1.size()[0])
print(out1.size()[1])
print(out1.size()[2])
print(out1.size()[3])
print(out1.size()[4])
cost1 = self.classif1(out1)
print('stackhourglass classif1 cost1')
print(cost1.size()[0])
print(cost1.size()[1]) #通道2为32,classif1 (nn.Conv3d(32, 1)处理后变为1。
print(cost1.size()[2])
print(cost1.size()[3])
print(cost1.size()[4])
打印结果:
stackhourglass classif1
1
32
48
96
312
stackhourglass classif1 cost1
1
1
48
96
312
2.
cost2 = self.classif2(out2) + cost1
print('stackhourglass cost2')
print(cost2.size()[0])
print(c