Layers
Basic layers for constructor.
ConvBnAct - nn.module
conv_layer = ConvBnAct(32, 32)
conv_layer
output
ConvBnAct( (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (act_fn): ReLU(inplace=True) )
conv_layer = ConvBnAct(32, 32, kernel_size=1)
conv_layer
output
ConvBnAct( (conv): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False) (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (act_fn): ReLU(inplace=True) )
conv_layer = ConvBnAct(32, 32, stride=2)
conv_layer
output
ConvBnAct( (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (act_fn): ReLU(inplace=True) )
conv_layer = ConvBnAct(32, 32, groups=32)
conv_layer
output
ConvBnAct( (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False) (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (act_fn): ReLU(inplace=True) )
conv_layer = ConvBnAct(32, 64, act_fn=False)
conv_layer
output
ConvBnAct( (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) )
conv_layer = ConvBnAct(32, 64, bn_layer=False)
conv_layer
output
ConvBnAct( (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (act_fn): ReLU(inplace=True) )
conv_layer = ConvBnAct(32, 64, pre_act=True)
conv_layer
output
ConvBnAct( (act_fn): ReLU(inplace=True) (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) )
conv_layer[0]
output
ReLU(inplace=True)
conv_layer = ConvBnAct(32, 64, bn_1st=True, pre_act=True)
conv_layer
output
ConvBnAct( (act_fn): ReLU(inplace=True) (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) )
conv_layer = ConvBnAct(32, 64, bn_1st=True)
conv_layer
output
ConvBnAct( (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (act_fn): ReLU(inplace=True) )
conv_layer = ConvBnAct(32, 64, bn_1st=True, act_fn=nn.LeakyReLU)
conv_layer
output
ConvBnAct( (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) (act_fn): LeakyReLU(negative_slope=0.01, inplace=True) )
SimpleSelfAttention
SA module from mxresnet at fastai.
sa = SimpleSelfAttention(32)
sa
output
SimpleSelfAttention( (conv): Conv1d(32, 32, kernel_size=(1,), stride=(1,), bias=False) )
SEModule
se_block = SEModule(128)
se_block
output
SEModule( (squeeze): AdaptiveAvgPool2d(output_size=1) (excitation): Sequential( (reduce): Linear(in_features=128, out_features=8, bias=True) (se_act): ReLU(inplace=True) (expand): Linear(in_features=8, out_features=128, bias=True) (se_gate): Sigmoid() ) )
se_block = SEModule(128, rd_channels=32)
se_block
output
SEModule( (squeeze): AdaptiveAvgPool2d(output_size=1) (excitation): Sequential( (reduce): Linear(in_features=128, out_features=32, bias=True) (se_act): ReLU(inplace=True) (expand): Linear(in_features=32, out_features=128, bias=True) (se_gate): Sigmoid() ) )
SEModuleConv
se_block = SEModuleConv(128)
se_block
output
SEModuleConv( (squeeze): AdaptiveAvgPool2d(output_size=1) (excitation): Sequential( (reduce): Conv2d(128, 8, kernel_size=(1, 1), stride=(1, 1)) (se_act): ReLU(inplace=True) (expand): Conv2d(8, 128, kernel_size=(1, 1), stride=(1, 1)) (gate): Sigmoid() ) )
se_block = SEModuleConv(128, reduction=32)
se_block
output
SEModuleConv( (squeeze): AdaptiveAvgPool2d(output_size=1) (excitation): Sequential( (reduce): Conv2d(128, 4, kernel_size=(1, 1), stride=(1, 1)) (se_act): ReLU(inplace=True) (expand): Conv2d(4, 128, kernel_size=(1, 1), stride=(1, 1)) (gate): Sigmoid() ) )
se_block = SEModuleConv(128, rd_channels=32)
se_block
output
SEModuleConv( (squeeze): AdaptiveAvgPool2d(output_size=1) (excitation): Sequential( (reduce): Conv2d(128, 32, kernel_size=(1, 1), stride=(1, 1)) (se_act): ReLU(inplace=True) (expand): Conv2d(32, 128, kernel_size=(1, 1), stride=(1, 1)) (gate): Sigmoid() ) )
se_block = SEModuleConv(128, reduction=4, rd_channels=16, rd_max=True)
se_block
output
SEModuleConv( (squeeze): AdaptiveAvgPool2d(output_size=1) (excitation): Sequential( (reduce): Conv2d(128, 32, kernel_size=(1, 1), stride=(1, 1)) (se_act): ReLU(inplace=True) (expand): Conv2d(32, 128, kernel_size=(1, 1), stride=(1, 1)) (gate): Sigmoid() ) )
model_constructor by ayasyrev