Esempio n. 1
0
    def forward(self, x, task_idx: int = -1):
        x = F.pad(x, pad=(3, 3, 3, 3), mode='constant',
                  value=0)  # other modes are reflect, replicate, constant

        x = self.conv1(x)
        x = self.bn1(x)
        x = self.relu(x)
        # x = F.pad(x, (0,1,0,1), 'constant', 0)
        self.x_prelayer1 = self.maxpool(x)  # (64,64,64)

        if self.bsp:
            self.x_layer1 = forward_sequential(self.x_prelayer1, self.layer1,
                                               task_idx)
            self.x_layer2 = forward_sequential(self.x_layer1, self.layer2,
                                               task_idx)
            self.x_layer3 = forward_sequential(self.x_layer2, self.layer3,
                                               task_idx)
            self.x_layer4 = forward_sequential(self.x_layer3, self.layer4,
                                               task_idx)
            x = forward_sequential(self.x_layer4, self.compress1, task_idx)
        else:
            self.x_layer1 = self.layer1(self.x_prelayer1)  # (256,32,32)
            self.x_layer2 = self.layer2(self.x_layer1)  # (512,16,16)
            self.x_layer3 = self.layer3(self.x_layer2)  # (1024,16,16)
            self.x_layer4 = self.layer4(self.x_layer3)  # (2048,16,16)
            x = self.compress1(self.x_layer4)  # (8,16,16)

        if self.final_act:
            x = self.compress_bn(x)
            x = self.relu1(x)
        if self.normalize_outputs:
            x = self.groupnorm(x)
        return x
Esempio n. 2
0
    def forward(self, x, time: int = -1):
        out = F.relu(self.bn1(self.conv1(x)))
        if self.bsp:  # bsp mode
            out = forward_sequential(out, self.layer1, time)
            out = forward_sequential(out, self.layer2, time)
            out = forward_sequential(out, self.layer3, time)
        else:
            out = self.layer1(out)
            out = self.layer2(out)
            if self.final_act:
                out = self.layer3(out)
            else:
                for i in range(6):
                    out = self.layer3[i](out)

                basic_block = self.layer3[6]
                block_input = out
                out = F.relu(basic_block.bn1(basic_block.conv1(out)))
                # out = basic_block.bn2(basic_block.conv2(out))
                out = basic_block.conv2(out)
                out += basic_block.shortcut(block_input)
                # out = F.relu(out)
        out = F.avg_pool2d(out, out.size()[3])
        out = out.view(out.size(0), -1)
        return out
Esempio n. 3
0
 def forward(self, x, task_idx: int = -1):
     out = F.relu(self.bn1(self.conv1(x)))
     if self.bsp:  # bsp mode
         out = forward_sequential(out, self.layer1, task_idx)
         out = forward_sequential(out, self.layer2, task_idx)
         out = forward_sequential(out, self.layer3, task_idx)
     else:
         out = self.layer1(out)
         out = self.layer2(out)
         out = self.layer3(out)
     out = F.avg_pool2d(out, out.size()[3])
     out = out.view(out.size(0), -1)
     out = self.linear(out)
     return out
Esempio n. 4
0
	def forward(self, x, task_idx:int=-1):
		if self.bsp:
			x = forward_sequential(x, self.conv1, task_idx)
			x = forward_sequential(x, self.conv2, task_idx)
			x = forward_sequential(x, self.conv3, task_idx)
			x = forward_sequential(x, self.conv5, task_idx)
		else:
			x = self.conv1(x)
			x = self.conv2(x)
			x = self.conv3(x)
			if self.final_act:
				x = self.conv5(x)
			else:
				x = self.conv5[0](x)
		if self.use_residual:
			res = self.residual(x)
			x = x + res
		return x
Esempio n. 5
0
	def forward(self, x, task_idx:int=-1, cache={}):
		x0 = x
		if self.bsp:
			x = forward_sequential(x, self.conv1, task_idx)
			x = forward_sequential(x, self.conv2, task_idx)
		else:
			x = self.conv1(x)
			x = self.conv2(x)
		if self.use_residual:
			x = x + self.residual(x0)
		x2 = x
		if self.bsp:
			x = forward_sequential(x, self.conv3, task_idx)
			x = forward_sequential(x, self.conv4, task_idx)
			x = forward_sequential(x, self.conv5, task_idx)
			x = x + forward_sequential(x2, self.skip, task_idx)
		else:
			x = self.conv3(x)
			x = self.conv4(x)
			if self.final_act:
				x = self.conv5(x)
			else:
				x = self.conv5[0](x)
			x = x + self.skip(x2)
			# x = self.conv5(x)
			# if self.final_act:
			# 	x = x + self.skip(x2)
			# else:
			# 	x = x + self.skip[0](x2)

		if self.normalize_outputs:
			x = self.groupnorm(x)
		return x
Esempio n. 6
0
    def forward(self, x, time):
        residual = x

        out = self.conv1(x, time)
        out = self.bn1(out)
        out = self.relu(out)

        # out = F.pad(out, pad=(1,1,1,1), mode='constant', value=0)  # other modes are reflect, replicate
        out = self.conv2(out, time)
        out = self.bn2(out)
        out = self.relu(out)

        out = self.conv3(out, time)
        out = self.bn3(out)

        if self.downsample is not None:
            residual = forward_sequential(x, self.downsample, time)

        out += residual
        out = self.relu(out)

        return out
Esempio n. 7
0
 def forward(self, x, time):
     out = F.relu(self.bn1(self.conv1(x, time)))
     out = self.bn2(self.conv2(out, time))
     out += forward_sequential(x, self.shortcut, time)
     out = F.relu(out)
     return out