MCPcopy Create free account
hub / github.com/InternRobotics/EmbodiedScan / ResModule

Class ResModule

embodiedscan/models/necks/imvoxel_neck.py:111–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

109
110
111class ResModule(nn.Module):
112
113 def __init__(self, in_channels, out_channels, stride=1):
114 super(ResModule, self).__init__()
115 self.stride = stride
116 self.conv1 = nn.Conv3d(in_channels,
117 out_channels,
118 3,
119 stride,
120 1,
121 bias=False)
122 self.norm1 = nn.BatchNorm3d(out_channels)
123 self.relu = nn.ReLU(inplace=True)
124 self.conv2 = nn.Conv3d(out_channels, out_channels, 3, 1, 1, bias=False)
125 self.norm2 = nn.BatchNorm3d(out_channels)
126 if self.stride != 1:
127 self.downsample = nn.Sequential(
128 nn.Conv3d(in_channels, out_channels, 1, stride, bias=False),
129 nn.BatchNorm3d(out_channels))
130 self.stride = stride
131
132 def forward(self, x):
133 identity = x
134 out = self.conv1(x)
135 out = self.norm1(out)
136 out = self.relu(out)
137 out = self.conv2(out)
138 out = self.norm2(out)
139 if self.stride != 1:
140 identity = self.downsample(x)
141 out += identity
142 out = self.relu(out)
143 return out

Callers 1

_make_layerMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected