class DenseNet(nn.Module):
def init(self, init_channels=64, growth_rate=32, blocks=[6, 12, 24, 16],num_classes=1000):
super(DenseNet, self).init()
bn_size = 4
drop_rate = 0
self.conv1 = Conv1(in_planes=3, places=init_channels)
num_features = init_channels
self.layer1 = DenseBlock(num_layers=blocks[0], inplances=num_features, growth_rate=growth_rate, bn_size=bn_size, drop_rate=drop_rate)
num_features = num_features + blocks[0] * growth_rate
self.transition1 = _TransitionLayer(inplace=num_features, plance=num_features // 2)
num_features = num_features // 2
self.layer2 = DenseBlock(num_layers=blocks[1], inplances=num_features, growth_rate=growth_rate, bn_size=bn_size, drop_rate=drop_rate)
num_features = num_features + blocks[1] * growth_rate
self.transition2 = _TransitionLayer(inplace=num_features, plance=num_features // 2)
num_features = num_features // 2
self.layer3 = DenseBlock(num_layers=blocks[2], inplances=num_features, growth_rate=growth_rate, bn_size=bn_size, drop_rate=dro