def __init__(self, n_class, in_ch, n_layer=12, growth_rate=12,
dropout_ratio=0.2, block=3):
in_chs = [in_ch + n_layer * growth_rate * i
for i in moves.range(block + 1)]
super(DenseBlock, self).__init__()
self.add_link(
'conv1', L.Convolution2D(3, in_ch, 3, 1, 1, wscale=np.sqrt(2))
)
for i in moves.range(block):
self.add_link('dense%d' % (i+2),
DenseBlock(in_chs[i], growth_rate, n_layer))
if not i == block - 1:
self.add_link('trans%d' % (i+2), Transition(in_chs[i+1]))
self.add_link(
'bn%d' % (block+1), L.BatchNormalization(in_chs[block])
)
self.add_link('fc%d' % (block+2), L.Linear(in_chs[block], n_class))
self.train = True
self.dropout_ratio = dropout_ratio
self.block = block
评论列表
文章目录