block(self.inplanes, planes, track_running_stats=True)) return nn.Sequential(*layers) def run(self, x, target=None): """Function for getting the outputs of intermediate layers """ if target is None or target > 5: raise NotImplementedError( 'Target is expected to be smaller than 6') layers = [ self.layer1, self.layer2, self.layer3, self.layer4, self.layer5 ] for layer in layers[:target]: x = layer(x) return x def forward(self, x): if self.sobel is not None: x = self.sobel(x) x = self.layer1(x) x = self.layer2(x) x = self.layer3(x) x = self.layer4(x) x = self.layer5(x) x = self.avgpool(x) return map(lambda head: head(x), self.heads) register('resnet34', ResNet34)
self.inplanes = planes * block.expansion for i in range(1, blocks): layers.append( block(self.inplanes, planes, track_running_stats=True)) return nn.Sequential(*layers) def forward(self, x, hidx, output_features=False): if self.sobel is not None: x = self.sobel(x) elif self.grayscale is not None: x = self.grayscale(x) if output_features: layers = [ self.layer1, self.layer2, self.layer3, self.layer4, self.layer5, self.avgpool ] else: layers = [ self.layer1, self.layer2, self.layer3, self.layer4, self.layer5, self.avgpool, self.heads[hidx] ] for layer in layers: x = layer(x) return x register('resnet34standard', ResNet34Standard)
layers.append(block(self.inplanes, planes, stride, downsample)) self.inplanes = planes * block.expansion for i in range(1, blocks): layers.append(block(self.inplanes, planes)) return nn.Sequential(*layers) def forward(self, x, hidx, output_features=False): if self.sobel is not None: x = self.sobel(x) elif self.grayscale is not None: x = self.grayscale(x) if output_features: layers = [ self.layer1, self.layer2, self.layer3, self.layer4, self.layer5, self.avgpool ] else: layers = [ self.layer1, self.layer2, self.layer3, self.layer4, self.layer5, self.avgpool, self.heads[hidx] ] for layer in layers: x = layer(x) return x register('resnet50small', ResNet50Small)
layers.append(block(self.inplanes, planes, stride, downsample)) self.inplanes = planes * block.expansion for i in range(1, blocks): layers.append(block(self.inplanes, planes)) return nn.Sequential(*layers) def forward(self, x, hidx, output_features=False): if self.sobel is not None: x = self.sobel(x) elif self.grayscale is not None: x = self.grayscale(x) if output_features: layers = [ self.layer1, self.layer2, self.layer3, self.layer4, self.layer5, self.avgpool ] else: layers = [ self.layer1, self.layer2, self.layer3, self.layer4, self.layer5, self.avgpool, self.heads[hidx] ] for layer in layers: x = layer(x) return x register('resnet50standard', ResNet50Standard)
layers.append(block(self.inplanes, planes, stride, downsample)) self.inplanes = planes * block.expansion for i in range(1, blocks): layers.append(block(self.inplanes, planes)) return nn.Sequential(*layers) def forward(self, x, hidx, output_features=False): if self.sobel is not None: x = self.sobel(x) elif self.grayscale is not None: x = self.grayscale(x) if output_features: layers = [ self.layer1, self.layer2, self.layer3, self.layer4, self.layer5, self.layer6, self.avgpool ] else: layers = [ self.layer1, self.layer2, self.layer3, self.layer4, self.layer5, self.layer6, self.avgpool, self.heads[hidx] ] for layer in layers: x = layer(x) return x register('resnet50large', ResNet50Large)
downsample = nn.Sequential( nn.Conv2d(self.inplanes, planes * block.expansion, kernel_size=1, stride=stride, bias=False), nn.BatchNorm2d(planes * block.expansion, track_running_stats=True)) layers = [] layers.append(block(self.inplanes, planes, stride, downsample, track_running_stats=True)) self.inplanes = planes * block.expansion for i in range(1, blocks): layers.append(block(self.inplanes, planes, track_running_stats=True)) return nn.Sequential(*layers) def forward(self, x, hidx, output_features=False): if self.sobel is not None: x = self.sobel(x) elif self.grayscale is not None: x = self.grayscale(x) if output_features: layers = [self.layer1, self.layer2, self.layer3, self.layer4, self.layer5, self.layer6, self.avgpool] else: layers = [self.layer1, self.layer2, self.layer3, self.layer4, self.layer5, self.layer6, self.avgpool, self.heads[hidx]] for layer in layers: x = layer(x) return x register('resnet34large', ResNet34Large)